2013-02-21 90 views
1

我有两个通过Ajax更新的下拉框,在手动使用时都可以正常工作。通过Ajax更新两个下拉框

用户单击第一个下拉列表并选择一个项目,该项目将发起Ajax调用并更新第二个下拉框。当用户点击第二个下拉式Ajax响应更新表单时。

现在我的问题: 我希望能够通过URL向用户发送该表单并传递两个变量,以便表单自动检查变量并更新这两个下拉列表。我可以在没有任何问题的情况下更新第一个下拉列表,并触发更改事件。但由于某些原因,第二个下拉框的值不会更新。

以下是代码片段,我有:

jQuery('#jform_make').val('<?php echo $make; ?>'); 
jQuery('#jform_make').trigger('change', function() { 
    console.log("state changed"); 
    jQuery('#jform_service').val('<?php echo $service; ?>'); 
    jQuery('#jform_service').change(); 
}); 
//jQuery('#jform_make').change(function(){ 
jQuery('#jform_make').bind('change', function() { 
    console.log("state changed"); 
}); 

这还不登录控制台东西。

更新:

jQuery('#jform_make').val('<?php echo $make; ?>').change(); 
jQuery('#jform_make').change(function(event) { 
    console.log(jQuery(this).val()); 
}); 

感谢

+4

这里没有代码来更新第二个下拉菜单。如何提供一个**完整的** [简短,独立,正确,示例](http://sscce.org/)? – 2013-02-21 13:23:25

+0

添加了更多代码,当第一次下拉更新时,我没有看到控制台日志中的任何内容,并且它还更新了第二个下拉列表。 – Khawaib 2013-02-21 13:39:39

回答

0

演示:http://jsfiddle.net/dU7kz/1/

HTML:

<select id="dd1" class="dropdown"></select> 
<select id="dd2" class="dropdown"></select> 

JS:

$('#dd1').append('<option value="1">My option 1</option>'); 
$('#dd1').append('<option value="2">My option 2</option>'); 
$('#dd1').append('<option value="3">My option 3</option>'); 
$('#dd1').append('<option value="4">My option 4</option>'); 
$('#dd1').append('<option value="5">My option 5</option>'); 
$('#dd1').val('3'); 

$('#dd2').append('<option value="6">My option 6</option>'); 
$('#dd2').append('<option value="7">My option 7</option>'); 
$('#dd2').val('7'); 

$('.dropdown').change(function(event) { 
    alert($(this).val()); 
}); 
+0

你可以添加html代码吗? – 2013-02-21 14:25:59

+0

仍然无法正常工作。我已经更新了上面的代码,请注意,首先下拉不会随着用户点击而改变,它会在AJAX响应返回时更改。 – Khawaib 2013-02-21 14:50:44

+0

我会尝试创建一个小提琴。 – Khawaib 2013-02-21 14:51:20