2012-09-11 82 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来代替!

相关问题