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>

student_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 事件处理程序,

                       $("#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 回答