2013-03-25 53 views
0

我有类似下面的使用jQuery选择选项不表现为预期

<select name="test" onchange="updateRecipientCount()"> 
<option value='123'>one</option> 
</select> 

一个选择选项。当我点击并选择它的行为正常的选择,我可以提交表单,没有任何问题。

现在我最近的变化是通过jQuery远程选择我的选项(从另一个字段获取它的值,比如自动完成,并根据值在选项中选择它),尽管我可以看到它在屏幕,它不像它应该的那样。

$('select option[value='123']').attr('selected', true); 

当我提交表单时,我得到以下错误并且它也不会触发select onchange函数。

java.lang.IllegalArgumentException: No Index Value 

有没有人有想法这里有什么问题?为什么当我使用jquery选择我的选项时发生此错误?

+0

如果你已经完全控制在你的HTML标记中,@Hardik Mishra的答案是更好的方法。 – 2013-03-25 04:29:06

+0

我还需要做多选。它像页面需要实际点击。否则它不起作用 – ComeRun 2013-03-25 04:33:35

+0

表单提交如何发生?这是一个阿贾克斯提交 – 2013-03-25 04:52:26

回答

0

id属性添加到您的select

<select name="test" id="test" onchange="updateRecipientCount()"> 

$('#test').val(123); //this will select the option with value 123. 

多选例:

<select name="test" id="test" onchange="updateRecipientCount();" multiple="multiple"> 
<option value='123'>one</option> 
<option value='123'>two</option> 
</select> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    updateRecipientCount(); // For testing 
}); 

function updateRecipientCount(){ 
    var ary = [123, 123]; // test data 
    $("#test").val(ary); 
} 
</script> 
+0

它是否让我使用您的解决方案进行多重选择? – ComeRun 2013-03-25 04:29:45

+0

对于多选,您需要将多个值作为数组传递。 – 2013-03-25 04:40:26

0

你必须在选择的报价错误,也attr选择的值应该是selected

$('select option[value="123"]').attr('selected', 'selected'); 
+0

与选择没有问题。它像页面需要一个实际的点击来执行正常! – ComeRun 2013-03-25 04:31:15