【问题标题】:Select options using jquery not behaving as expected使用 jquery 选择选项的行为不符合预期
【发布时间】:2013-03-25 12:44:55
【问题描述】:

我有一个选择选项,如下所示

<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 选择选项时会发生此错误?!

【问题讨论】:

  • 如果您可以完全控制 HTML 标记,那么@Hardik Mishra 的答案是更好的方法。
  • 我还需要多选。就像页面需要实际点击一样。否则它不起作用
  • 表单提交情况如何?是ajax提交吗

标签: java jquery


【解决方案1】:

您在选择器中的引号错误,attr selected 的值也应该是 selected:

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

【讨论】:

  • 选择没有问题。就像页面需要实际点击才能正常执行一样!
【解决方案2】:

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>

【讨论】:

  • 是否允许我使用您的解决方案进行多选?
  • 对于多选,您需要将多个值作为数组传递。
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多