使用JQuery查找具有特定值的所有输入字段

时间:2011-05-10 04:13:49

标签: jquery

我有以下代码在表单提交时执行:

$('input[value=enter highlight]').val('');

基本上,它会在表单中搜索包含值'enter highlight'的所有文本字段,并删除该文本。问题是,当文本字段的HTML代码如下:

<input type="text" value="enter highlight"/>

并且用户在表单中手动更改此值,JQuery仍然将字段的值识别为HTML代码中设置的原始值(即“输入突出显示”)并将字段的值重置为空白,即使用户在该字段中输入了不同的值。非常意外的行为。

知道我需要做些什么才能确保JQuery在清除值之前考虑用户在文本框中输入的任何更改值?

非常感谢!

3 个答案:

答案 0 :(得分:7)

不确定这是否是问题,但您的JQuery选择器中应该有引号

$('input[value="enter highlight"]').val('');

失败了,试试这个:

$('input[value="enter highlight"]').each(function () {
    if ($(this).val() == "enter highlight") $(this).val('');
});

答案 1 :(得分:2)

我依稀记得读取选择器处理原始HTML源代码中的值,因此不要在DOM加载后对属性值进行更改。

将它更改为显式循环应该有效,尽管它不那么简洁:

$('input').each(function() { 
  if($(this).val()=="enter highlight") { 
    $(this).val(''); 
  } 
});

答案 2 :(得分:2)

您期望的行为似乎只适用于jQuery 1.2.6或更低版本(在小提琴上测试)。

所有其他版本都清除了原始值。这很可能是因为[value=""]可能检查原始属性值而不是当前值。

我在这里设置了一个小提琴你可以看一下:http://jsfiddle.net/jomanlk/4PBTZ/只需更改它上面的jquery版本。

我建议您使用each()来电。

$('input:text').each(function(){
    if ($(this).val() == 'enter highlight')  {
        $(this).val('');
    }
});