2014-01-11 30 views
-1

我想加載更改郊區下拉列表後狀態字段的值。郊區下拉菜單來自模糊郵政編碼文本字段後的ajax頁面。我jQuery代碼是html元素ID沒有得到後加載它從AJAX頁

$("#zip").blur(function(){ 
     $.post("get_suburb_admin.php",{zip:$(this).val()}, function(d){ 
      $("#suburb_cnt").html(d.suburb); 
     },'JSON'); 
    }); 
$("#suburb").change(function(){ 
     $.post("get_state.php",{suburb:$(this).val()}, function(a){ 
      $("#state").val(a); 
     }); 
    }); 

HTML結構是

<tr> 
       <td>Suburb :</td> 
       <td id="suburb_cnt"><input type="text" name="suburb" id="suburb" value="<?php echo $row['suburb'];?>" /></td> 
      </tr> 

      <tr> 
       <td>Postcode :</td> 
       <td><input type="text" name="zip" id="zip" value="<?php echo $row['zip'];?>" /></td> 
      </tr> 

      <tr> 
       <td>State :</td> 
       <td id="state_cnt"><input type="text" name="state" id="state" value="<?php echo $row['state'];?>" /></td> 
      </tr> 

但它沒有響應後改變是從AJAX頁面來郊區下拉。我在這裏給出來自ajax頁面的內容

$sql=mysql_query("SELECT town,region FROM au_postcode WHERE postcode='".$_REQUEST['zip']."'"); 
$arr=array(); 
$arr['suburb']='<select name="suburb" id="suburb">'; 
     while($row=mysql_fetch_array($sql)){ 
$arr['suburb'].='<option value="'.$row['town'].'">'.$row['town'].', '.$row['region'].'</option>'; 
     } 
$arr['suburb'].='</select>'; 

echo json_encode($arr); 

郊區數據也沒有得到表單提交後的方法後。 $ _REQUEST [ '郊區'] =沒什麼,表格後提交

我怎麼能解決這個問題,請幫助

+1

的[?事件綁定的動態創建的元素]可能重複(http://stackoverflow.com/questions/203198/event-binding -on-dynamic-created-elements) – Barmar

回答

0

試試這個

$("#suburb").change(function(){ 
    var suburbVal = $(this).val(); 
    $.post("get_state.php",{suburb:suburbVal}, function(a){ 
     $("#state").val(a); 
    }); 
}); 

和同爲#zipblur事件

+0

對不起,改變後事件不再發射 – user1567682

+0

對不起,我沒有得到它? – zzlalani

0

DOM在每個頁面加載/刷新時準備元素,但是當你動態地將東西添加到頁面時(不刷新它),它不會重新啓動DOM並檢測它。所以你必須通知javascript,找到你的元素。您可以使用/綁定LIVE方法(用於jQuery 1.7)或ON方法(用於jQuery的更高版本)。

這裏是jQuery中CLICK事件的一個簡單示例。

$("#myButton").click(function(){ 
    /*TO DO*/ 
}); 

和其另一個版本(你可以用LIVE/ON按您jQuery`s版)

$("#myButton").live("click", function(e){ 
    /*TO DO*/ 
}); 

一切順利:)

0

我沒有約束力郊區html元素。你可以通過改變這樣做:

$("#suburb").change(function(){ 
     $.post("get_state.php",{suburb:$(this).val()}, function(a){ 
      $("#state").val(a); 
     }); 
    }); 

到:

$("body").on("change","#suburb",(function(){ 
     $.post("get_state.php",{suburb:$(this).val()}, function(a){ 
      $("#state").val(a); 
     }); 
    }); 
+0

@ user1567682:你試過這個嗎? –

相關問題