我有以下代码在表单提交时执行:
$('input[value=enter highlight]').val('');
基本上,它会在表单中搜索包含值'enter highlight'的所有文本字段,并删除该文本。问题是,当文本字段的HTML代码如下:
<input type="text" value="enter highlight"/>
并且用户在表单中手动更改此值,JQuery仍然将字段的值识别为HTML代码中设置的原始值(即“输入突出显示”)并将字段的值重置为空白,即使用户在该字段中输入了不同的值。非常意外的行为。
知道我需要做些什么才能确保JQuery在清除值之前考虑用户在文本框中输入的任何更改值?
非常感谢!
答案 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('');
}
});