Wie man den ausgewählten Wert der option in einem Dropdown-Feld in PHP-code
Ich habe ein dropdown-Feld listet eine Reihe von logos, wie Blume, Schmetterling etc.
<p class="title1">Logo</p>
<select name="logoMenu" class="select" size="7">
<?php foreach($logos as $logo):?>
<option id="<?php echo $logo['Subproperty']['id'];?>" value="<?php echo $logo['Subproperty']['values'];?>">
<?php echo $logo['Subproperty']['values'];?>
</option>
<?php endforeach;?>
</select>
Angenommen, ich wähle den logo 'Blume' aus der drop-down-box, ich will die Blume Bild angezeigt werden soll in ein div. Dies ist der div, dass ich um die Bilder zu zeigen:
<div id="theme_logos" class="float_left spaceleft" style="display:none;">
<?php foreach($defaultLogos as $logo):
//if($logo['Subproperty']['values']==clicked option value){?>
<img height="50" width="50" src="/FormBuilder/app/webroot/img/themes/<?php echo $logo['Subproperty']['images'];?>" class="float_left user_profile_image user_profile_image" alt="Default50"/>
<?php endforeach;?>
</div>
Das problem bei diesem code ist, dass es zeigt alle Bilder in der Tabelle. Weil in meinem controller-code gebe ich nur die property-id als 'Logo', aber geben Sie nicht das logo.
$this->set('defaultLogos',$this->Subproperty->find('all',array('conditions'=>array('Subproperty.property_id'=>1,'Subproperty.values'=>"Flower"))));
Hier habe ich hart codiert 'Blume', so dass ich nur die Blume Bild.
Wenn ich wählen Sie das logo aus der drop-down-box, wie kann ich pass den ausgewählten Wert an den controller-code? Oder wenn ich die ausgewählte logo-Namen mit jQuery, wie kann ich den Wert in der if-Bedingung innerhalb der foreach-Schleife?
Ich bin mit der CakePHP
Rahmen.
$("#logoMenu option").click(function(){
selectedLogo=$(this).attr("value");
$('#subproperty_id').val($(this).attr("id"));
if(selectedLogo=="Your logo"){
$("#themes_upload").show();
}
else{
alert(selectedLogo);
$("#themes_upload").hide();
$("#theme_logos").show();
}
});
EDIT:
Nun habe ich versucht einen AJAX-POST, wo ich pass das gewählte logo, um die gleiche Aktion des Controllers. Ich bekomme den Wert, wenn ich alert-der übergebene Wert in der success-Funktion der ajax-Funktion, aber das Bild erscheint nicht.
$("#logoMenu option").click(function(){
selectedLogo=$(this).attr("value");
$('#subproperty_id').val($(this).attr("id"));
if(selectedLogo=="Your logo"){
$("#themes_upload").show();
} else {
alert(selectedLogo);
$.ajax({
type: "POST",
url: "http://localhost/FormBuilder/index.php/themes/themes/",
async: false,
data: "selectedLogo="+selectedLogo,
success: function(msg){
alert( "Data Saved: " + msg);
}
});
$("#themes_upload").hide();
$("#theme_logos").show();
}
function themes(){
$this->set('themes',$this->Theme->find('all'));
$logo=$this->params['form']['selectedLogo'];
echo "logo:".$logo;
$this->set('defaultLogos',$this->Subproperty->find('all',array('conditions'=>array('Subproperty.property_id'=>1,'Subproperty.values'=>$logo))));
}
Wenn ich versuche das Bild in die Seite, es erscheint nicht. Ist es, weil der div-zeigen-Befehl wird nach dem AJAX-request?
- Sollten Sie nicht AJAX verwenden für das?
- Es ist nicht klar, ob Sie dies tun wollen, mit Ajax oder einfach Formular Absenden
- Ich möchte bleiben auf der gleichen Seite,so dass ich nicht wollen-Formular Einreichen. Wenn ich wählen Sie ein bestimmtes logo,Ihr Bild angezeigt werden soll. TheVillageIdiot die Antwort klingt vernünftig,aber es funktioniert nicht.
- Wird das senden einer ajax-post an die gleiche Seite arbeiten?
- Wenn die Bilder wirklich klein sind und nicht langsam erste laden, dann brauchen Sie nicht ajax.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie können setzen Sie den src des Bildes in den Wert der option oder put-Attribut des Bildes in versteckte div den Wert des Elements, die Sie zeigen, in wählen Sie diese option, wird es wirklich einfach. Wie:
FALL 1) Putting img-src in der Eigenschaft value der option
FALL 2) Setzen Bild die alt-Taste, um den Wert in der option
EDIT:- Test-Code (FALL 2)