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

3
我有以下代码,在表单提交时执行:
```html

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

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

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

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

即使用户在表单中手动更改了该值,JQuery仍将字段的值视为在HTML代码中设置的原始值(即“输入高亮”),并将字段的值重置为空白,即使用户在字段中输入了不同的值。这是非常意外的行为。

您有什么想法,可以确保JQuery考虑到用户在清除值之前输入的任何更改的值?

非常感谢!


你能展示一下你整个的onsubmit代码吗? - corroded
3个回答

9

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

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

如果失败了,试试这个:
$('input[value="enter highlight"]').each(function () {
    if ($(this).val() == "enter highlight") $(this).val('');
});

谢谢,但我尝试过带引号和不带引号的两种方式,JQuery仍然无法识别用户输入的新值。 - Bug Magnet

2

我模糊地记得读过选择器是基于原始HTML源代码中的值工作的,因此无法捕捉DOM加载后对属性值所做的更改。

将其更改为显式循环应该可以解决问题,虽然不够简洁:

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

2
您期望的行为似乎只在jQuery 1.2.6或更低版本上有效(在fiddle上进行了测试)。
所有其他版本都清除了原始值。这很可能是因为[value=""]可能检查原始属性值而不是当前值。
我在这里设置了一个fiddle,您可以查看:http://jsfiddle.net/jomanlk/4PBTZ/只需更改其中的jquery版本即可。
我建议您使用each()调用。
$('input:text').each(function(){
    if ($(this).val() == 'enter highlight')  {
        $(this).val('');
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接