2012-09-11 153 views
0

我有一個jquery回傳後得到的答覆是JSON我改變了輸入型的價值選擇這樣如何選擇的選擇選項觸發事件

$('#new-address select[name=\'country_id\']').val(data['country_id']).trigger('change'); 
$('#new-address select[name=\'zone_id\']').val(data['zone_id']); 

和改變選定後後值我發射一個事件'改變'來填充狀態選擇輸入,之後我想改變狀態選擇輸入的選定值,但是從上面的代碼它不改變狀態選擇的值,但它是填充狀態。

所以我想可能是控制不回來了扳機後,該功能使測試,我把一個警惕,無論是來這裏還是不喜歡這個

$('#new-address select[name=\'country_id\']').val(data['country_id']).trigger('change'); 
alert('came here'); 
$('#new-address select[name=\'zone_id\']').val(data['zone_id']); 

測試此我得到警報後,說來到這裏,點擊確定後,狀態的值正在改變,因爲我想。

那麼,我的方法之前有什麼問題,以及爲什麼在添加警報後它工作正常?我應該做些什麼才能獲得我想要的?

在此先感謝。

+2

JavaScript按順序逐行運行,並且您的ajax調用可能需要一些時間才能回來,那就是當您應該在ajax調用的回調中加載您的選擇時,請告訴我是否需要代碼。警報暫停你的序列,因此它後面工作 – abhijit

+0

@abhi感謝您的回覆。你可以發佈代碼..我試圖但仍然不能正常工作.. – Pankaj

+1

沒有probs,http://stackoverflow.com/questions/815103/jquery-best-practice-to-populate-drop-down只是使用來自鏈接的代碼並將其放入第一個選擇更改事件並從第一個選擇中傳遞參數。 – abhijit

回答

0

我不確定這是正確或錯誤的方式,但它對我有效。通過這樣做,我得到了我想要的東西,因爲狀態的設定值,而它的製作HTML的狀態選擇設置

$('#new-address select[name=\'country_id\']').val(data['country_id']); 
var selectedstate = data['zone_id']; 
$.get(
     "index.php?route=common/home/country&token=<?php echo $token;?>", 
     { 'country_id': data['country_id'] }, 
     function(json) { 
      html = '<option value=""><?php echo $text_select; ?></option>'; 
      if (json['zone'] != '') { 
       for (i = 0; i < json['zone'].length; i++) { 
        html += '<option value="' + json['zone'][i]['zone_id'] + '"'; 
        if (parseInt(json['zone'][i]['zone_id']) == parseInt(selectedstate)) { 
         html += ' selected="selected"'; 
        } 
        html += '>' + json['zone'][i]['name'] + '</option>'; 
       } 
      } else { 
        html += '<option value="0" selected="selected"><?php echo $text_none; ?></option>'; 
        } 
      $('#new-address select[name=\'zone_id\']').html(html); 
     }, 
     'json' 
); 

:由於的JavaScript運行順序建議@abhi所以我改變了我的代碼這一點。

0

這與您的ajax調用的異步屬性有關。這是不推薦,但你可以將它設置爲false,它應該工作正常。或者你真的需要學習如何使用call back functions來代替!

相關問題