2016-04-20 41 views
6

Sto tentando di utilizzare onclick su un elenco a discesa.Yii2 Jquery onchange dropdown

Questa è la mia opinione:

<?= $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') ?> 

e questa è la mia funzione:

<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> 

Quello che voglio è quando seleziono un valore da contact_gender un valore non è selezionata automaticamente in CONTACT_TITLE. Grazie in anticipo.

p/s: Sono un principiante.

+2

Se quello che hai fornito è il codice che stai usando i nomi delle funzioni sono diversi. 'onchange' è' getSalutationValue' mentre la funzione è 'getSolutationValue'. – Alex

risposta

3

Ho risolto. I problemi sono che non ho dichiarato il valore e ho aggiunto su.change due volte. Ecco il codice corretto. Grazie per la risposta.

<?= $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

Dovresti provare questo codice.

$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

Grazie per la risposta. Ma ho ricevuto questo errore "Uncaught ReferenceError: getSalutationValue non è definito" e non è successo niente. –

+1

hai ''onchange' => 'getSalutationValue'' come opzione di dropdownlist, quindi rimuovi da esso. – GAMITG