当用户输入电子邮件时,输入文本框的 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 & 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 & Nagar Haveli</option>
<option value="33">Daman & 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();
}