查找与使用JQuery

问题描述:

我有下面的代码,当表单提交执行一定值的输入字段:查找与使用JQuery

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

从本质上讲,它搜索通过表单包含的值的所有文本字段“中输入亮点”并删除该文本。问题是,当文本字段中的HTML代码如下:

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

和用户手动更改表单中这个值,JQuery的仍然承认为是在HTML设置的原始值字段的值代码(即'输入突出显示')并将字段值重置为空白,即使用户在字段中输入了不同的值。非常意外的行为。

任何想法我需要做什么来确保JQuery将考虑用户在清除值之前在文本框中输入的任何更改的值?

非常感谢!

+0

你能展示你的整个提交代码吗? – corroded 2011-05-10 04:16:02

+0

使用jQuery 1.6? – 2011-05-10 04:21:58

不知道这是否是问题,但你的jQuery选择应该有报价在它

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

做不到这一点,试试这个:

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

谢谢,但我尝试过使用和不使用引号,而JQuery仍然无法识别用户输入的新值。 – 2011-05-10 04:24:40

我依稀记得读的是选择工作的关原始HTML源代码中的值,所以不要选择DOM加载后所做属性值的更改。

将其更改为一个明确的循环应该工作,虽然它不够简明:

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

您所期望的行为似乎只在jQuery的1.2.6或下方(小提琴测试)工作。

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

我已经在这里安装了一个小提琴,你可以看看:http://jsfiddle.net/jomanlk/4PBTZ/只需更改它的jQuery版本。

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

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