0

ユーザーが電子メールを入力すると、入力テキスト ボックスの onchange イベントが発生し、都市のドロップダウン ボックスを除く他のすべてのフィールドが表示されます。$("#MerryParentCityId").val(result_array[5]); 値は 81 ですが、ユーザーが MerryParentCityId ドロップダウン ボックスに表示されていないそれぞれの都市名を持っています。状態ドロップダウン ボックスの値は正常に表示されています。誰かが私が間違っている場所を教えてもらえますか?

HTMLフォームのMerryParentCityIdドロップダウンボックスに問題があると感じています。しかし、そこにどのような変更を加えるかについてはわかりません。

ありがとうございました。

add.ctp (都市と州のドロップダウン ボックスが配置されている部分的なフォーム)

<div class="input text required">
<label for="MerryParentEmail">Email</label><input name="data[MerryParent][email]" type="text" maxlength="30" id="MerryParentEmail" /></div>
<div class="input text required"><label for="MerryParentName">Parent/Guardian Name</label>
<input name="data[MerryParent][name]" type="text" maxlength="30" id="MerryParentName" /></div>
<div class="input text"><label for="MerryParentLandline">Landline</label><input name="data[MerryParent][landline]" type="text" maxlength="12" id="MerryParentLandline" /></div>
<div class="input text required"><label for="MerryParentMobile">Mobile</label><input name="data[MerryParent][mobile]" type="text" maxlength="10" id="MerryParentMobile" /></div>
<div class="input text required"><label for="MerryParentAddress">Address</label><input name="data[MerryParent][address]" type="text" maxlength="40" id="MerryParentAddress" /></div>
<div class="input select required"><label for="MerryParentStateId">State</label><select name="data[MerryParent][state_id]" id="MerryParentStateId">

<option value="">Choose one</option>
<option value="31">Andaman &amp; Nicobar</option>
<option value="4">Andra Pradesh</option>
<option value="25">Arunachal Pradesh</option>
<option value="13">Assam</option>
<option value="2">Bihar</option>
<option value="30">Chandigarh</option>
<option value="16">Chhattisgarh</option>
<option value="32">Dadra &amp; Nagar Haveli</option>
<option value="33">Daman &amp; Diu</option>
<option value="27">Delhi</option>
<option value="24">Goa</option>
<option value="7">Gujarat</option>
<option value="15">Haryana</option>
<option value="19">Himachal Pradesh</option>
<option value="17">Jammu and Kashmir</option>
<option value="12">Jharkhand</option>
<option value="8">Karnataka</option>
<option value="11">Kerala</option>
<option value="34">Lakshadweep</option>
<option value="5">Madhya Pradesh</option>
<option value="1">Maharashtra</option>
<option value="22">Manipur</option>
<option value="21">Meghalaya</option>
<option value="28">Mizoram</option>
<option value="23">Nagaland</option>
<option value="10">Orissa</option>
<option value="29">Puducherry</option>
<option value="14">Punjab</option>
<option value="9">Rajasthan</option>
<option value="26">Sikkim</option>
<option value="6">Tamil Nadu</option>
<option value="20">Tripura</option>
<option value="35">Uttar Pradesh</option>
<option value="18">Uttaranchal</option>
<option value="3">West Bengal</option>
</select></div>
<div class="input select required"><label for="MerryParentCityId">City</label>
<select name="data[MerryParent][city_id]" id="MerryParentCityId">
</select></div>
<div class="input text required"><label for="MerryParentPostalCode">Postal Code</label>
<input name="data[MerryParent][postal_code]" type="text" maxlength="6" id="MerryParentPostalCode" /></div></fieldset><div class="submit"><input type="submit" value="Submit" /></div><div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="d2ad0fe88cfdc6c730e0a5b8d95d84db40a24543%3A" id="TokenFields273660451" /></div></form>  

jqueryコード

<script type="text/javascript">
  $(document).ready(function(){


      $("#MerryParentEmail").change(function(){
        //txt=$("#MerryParentEmail").val();
        email_id=$("#MerryParentEmail").serialize();
        //alert(txt);
        $.post("../students/get_parent_info",email_id,function(result_str){
        result_array=result_str.split('<br>');
          $("#MerryParentName").val(result_array[0]); 
          $("#MerryParentLandline").val(result_array[1]);
          $("#MerryParentMobile").val(result_array[2]); 
          $("#MerryParentAddress").val(result_array[3]);
          $("#MerryParentStateId").val(result_array[4]);
          $("#MerryParentCityId").val(result_array[5]);
          $("#MerryParentPostalCode").val(result_array[6]);
        });
      });

           $("#MerryParentStateId").change(function(){
        state=$(this).val();
        txt_str="state_id="+state;
        $.get("../students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
        });
       });



 });

</script>

students_controller.php

function get_parent_info(){
//$this->layout=false;
 if (!empty($this->data)){

    $merryparent_info=$this->Student->MerryParent->getMerryParents($this->data['MerryParent']['email']);

    echo $merryparent_info['MerryParent']['name'].'<br>';
    echo $merryparent_info['MerryParent']['landline'].'<br>';
    echo $merryparent_info['MerryParent']['mobile'].'<br>';
    echo $merryparent_info['MerryParent']['address'].'<br>';
    echo $merryparent_info['MerryParent']['state_id'].'<br>';
    echo $merryparent_info['MerryParent']['city_id'].'<br>';
    echo $merryparent_info['MerryParent']['postal_code'].'<br>';
    }
}

function getcities(){
    $this->data['MerryParent']['state_id']=$_GET['state_id'];
    if (!empty($this->data['MerryParent']['state_id'])){
       $cities = $this->Student->MerryParent->City->getCities($this->data['MerryParent']['state_id']);
    //print_r($cities);
    foreach ($cities as $k=>$v){
        echo '<option value="'.$k.'">'.$v.'</option>';
    }

        /* foreach($cities as $optionValue){
            echo '<option>' . $optionValue . '</option>';
        }*/
    }else{
        $this->Session->setFlash('You didn\'t select a state!');
    }

}

function add(){
        //saves a new students information to db
        $states=$this->Student->MerryParent->State->getStates();
    $this->set('states',$states);

    //$cities=array();  
}
4

2 に答える 2

1

次のコードを$( "#MerryParentEmail")。change eventhandlerに追加したら、

                       $("#MerryParentStateId").val(result_array[4]);
          state=result_array[4];
          txt_str="state_id="+state;
          $.get("../students/getcities",txt_str,function(result){
            $("#MerryParentCityId").html(result).show();
            $("#MerryParentCityId").val(result_array[5]);
          });

都市のドロップダウンボックスにデータが入力され、ユーザーのそれぞれの都市が表示されます。ありがとうございました。

于 2012-04-11T09:11:04.537 に答える
0

うまくいくはずです。

返された値がselect 要素city_idのどの ID とも一致しないとしか思えません。#MerryParentCityId

ページの HTML とresult_str;を調べます。不一致を探します。

または多分#MerryParentCityId間違っています。

于 2012-04-10T05:56:51.247 に答える