2013-06-28 129 views
0

我正在用一个小小的脚本努力工作,这个脚本不该那么辛苦......我正在捕捉select标签的变化事件,并继续使用一些ajax的东西。最后,我处理了ajax调用的响应,并且在某些情况下,我试图“回滚”用户的动作。+jQuery在<select>标签中选择一个特定的选项

所以他选择了一个选项,选项通过ajax发送到服务器,服务器说“no你不能这样做“,我会显示一条警告消息,告诉用户他不聪明,然后尝试重新选择第一个默认选项,即空白。

这里的DOM部分:

<select class="closedStatus"> 
    <option data-requestid="2" value="-1">&nbsp;</option> 
    <option data-requestid="2" value="3">yes</option> 
</select> 

所以,我想选择的选项设置回第一个,与value="-1"
但到目前为止没有运气......这是我的代码:

$('.closedStatus').val('-1'); 

我发现这在另一篇但这并不为我工作...... 任何想法,为什么它不工作?

编辑:其实我真的很惭愧和愚蠢:这个问题是我在我的页面标有.closedStatus类多<select>列表...当然,它没有工作方式......

无论如何感谢您的帮助!

+2

对我来说工作得很好,你能不能展示脚本的其余部分? – Spokey

+0

似乎工作正常http://jsfiddle.net/j08691/Hc9Tw/ – j08691

+0

http://jsfiddle.net/Hc9Tw/1/ – softsdev

回答

4

你可以查找option元素,其值= -1,然后selected属性设置为true:

$('select.closedStatus').find('option[value="-1"]').prop('selected', true); 

Working Demo

,因为这是选择选择的第一个孩子,这是一个选项,并设置该选项的值,你在做什么($('.closedStatus').first().val('-1');)将无法正常工作。我不确定这会有什么影响(我不认为你可以在选项元素上调用val('-1')),但如果它有效,它会将第一个选项的值更改为-1,而不会影响选择。

+0

这应该工作,因为我在jsFiddle尝试它,但不知何故,它不能在我的项目中工作...我编辑我的问题与一些更多的信息和jsFiddle。感谢您的帮助。 –

+0

我终于找到了什么阻止了这个解决方案以及所有其他方面的工作。这是由于另一个js插件(“选择”),它对待选择列表的方式与预期不同。 –

1

它会为你工作

变化

$('.closedStatus option[value=-1]').attr('selected','selected'); 

代替

$('.closedStatus').first().val('-1'); 
+0

所以您通过传递值来获得元素的价值...非常有用 –

+0

请参阅证明其代码有效的注释,并且其他地方存在问题。 – Archer

+0

这应该工作,因为我在jsFiddle尝试它,但不知何故它不能在我的项目中工作...我编辑我的问题与一些更多的信息和jsFiddle。感谢您的帮助。 –

相关问题