2016-04-20 4 views
6

Ich versuche, Onclick auf einer Dropdown-Liste zu verwenden.Yii2 Jquery onchange dropdown

<?= $form->field($model, "contact_gender")->dropDownList(ArrayHelper::map($genders, 'value', 'description'),['class'=>'form-control','prompt'=>'Please Select','onchange'=>'getSalutationValue','required'=>true])->label('Gender') ?> 

<?= $form->field($model, "contact_title")->dropDownList(ArrayHelper::map($salutations, 'value', 'description'),['class'=>'form-control Salutation','prompt'=>'Please Select','required'=>true])->label('Salutation') ?> 

und dies ist meine Funktion:

Dies ist meine Ansicht

<script> 
function getSolutationValue() { 
    var value = (this.value); 
    if(value == 'Male'){ 
     $('.Salutation').val('0'); 
    } 
    if(value == 'Female'){ 
     $('.Salutation').val('1'); 
    } 
    if(value == 'Unspecified'){ 
     $('.Salutation').val('2'); 
    } 
} 

</script> 

Was ich will, ist, wenn ich einen Wert von contact_gender wähle, wird ein Wert automatisch in CONTACT_TITLE ausgewählt. Vielen Dank im Voraus.

p/s: Ich bin ein Neuling.

+2

Wenn Sie den Code verwenden, den Sie verwenden, unterscheiden sich die Funktionsnamen. 'onchange' ist' getSalutationValue', während die Funktion 'getSolutationValue' ist. – Alex

Antwort

3

Ich löste es. Die Probleme sind, dass ich den Wert nicht angegeben habe und ich on.change zweimal hinzugefügt habe. Hier ist der richtige Code. Danke für die Antwort.

<?= $form->field($model, "contact_gender")->dropDownList(ArrayHelper::map($genders, 'value', 'description'),['class'=>'form-control gender','prompt'=>'Please Select','required'=>true])->label('Gender') ?> 

<?= $form->field($model, "contact_title")->dropDownList(ArrayHelper::map($salutations, 'value', 'description'),['class'=>'form-control Salutation','prompt'=>'Please Select','required'=>true])->label('Salutation') ?> 

$this->registerJs(' 
$(".gender").change(function(){ 
    var value = this.value; 
    if(value == "MALE"){ 
    $(".Salutation").val("0"); 
    } 
    if(value == "FEMALE"){ 
    $(".Salutation").val("4"); 
    } 
    if(value == "UNSPECIFIED"){ 
    $(".Salutation").val("23"); 
} 
}); 
1

Sie sollten diesen Code versuchen.

$this->registerJs(" 
$(function(){ 
    $('.gender').change(function(){ 
     getSalutationValue(this.value); 
    }); 
    function getSalutationValue(value) { 
     if(value == 'Male'){ 
     $('.Salutation').val('0'); 
     } 
     if(value == 'Female'){ 
     $('.Salutation').val('1'); 
     } 
     if(value == 'Unspecified'){ 
     $('.Salutation').val('2'); 
     } 
    } 
    }); 
"); 

<?= $form->field($model, "contact_gender")->dropDownList(ArrayHelper::map($genders, 'value', 'description'), ['class'=>'form-control gender','prompt'=>'Please Select', 'required'=>true])->label('Gender') ?> 

<?= $form->field($model, "contact_title")->dropDownList(ArrayHelper::map($salutations, 'value', 'description'),['class'=>'form-control Salutation','prompt'=>'Please Select','required'=>true])->label('Salutation') ?> 
+0

Vielen Dank für Ihre Antwort. Aber ich habe diesen Fehler "Uncaught ReferenceError: getSalutationValue ist nicht definiert" und nichts ist passiert. –

+1

Sie haben '' onchange '=>' getSalutationValue 'als Option der Dropdown-Liste, also entfernen Sie sie. – GAMITG