jQuery函数正在重置下拉选择

时间:2012-06-14 06:42:00

标签: javascript jquery

我的页面中有一个下拉菜单,它是这样的:

   <select id="my_dropdown" name="my_dropdown">
       <option value="one">ONE</option>
       <option value="two">TWO</option>
       <option value="three">THREE</option>
   </select>
   <input type="text" size="10" id="foobar" value="0" />

我的jQuery代码是:

   $('#foobar').keyup(function(){
       notOptionOne();
   }

   function notOptionOne() {
       if ( !$('#my_dropdown').val('one') ) {
           alert('Option ONE was not selected');
       }
   }

无论我的下拉菜单上的选项是什么,当我在输入框中输入任何文本时,它都会显示警告框并将我的下拉选项重置为一个。当我关闭警报框或做其他事情时,我想保留我的选择。是什么导致了这种行为?

4 个答案:

答案 0 :(得分:3)

   function notOptionOne() {
   if ( $('#my_dropdown').val()!='one' ) {
       alert('Option ONE was not selected');
   }
   }

jQuery中的val()函数既可以获取值,也可以设置值。当你向它传递一个参数时,jQuery做的是设置控件的值。如果没有参数,则获取值。

答案 1 :(得分:1)

试试这个:

$('#my_dropdown').val() !== 'one' 

$('#my_dropdown').val('one')是jquery包装器,类似于数组的对象。这就是为什么!$('#my_dropdown').val('one')总是false并且您没有得到alert

答案 2 :(得分:1)

试试这个:

$('#my_dropdown').change(function(){
   if ($(this).val() != 'one') {
      alert('Option ONE was not selected');
   }
})

答案 3 :(得分:1)

$('#my_dropdown').val('one')会将#my_dropdown的值设置为one(即使在构造中也是如此)。

您应该获取#my_dropdown元素的值,并将其与字符串one进行比较:

function notOptionOne() {
    if ($('#my_dropdown').val() != "one") {
       alert('Option ONE was not selected');
    }
}