我有一个input
字段会缓存它的value
属性,请看下面的示例:
$("#signUpEmail").keyup(function(e) {
console.log(e.target.value); //work
console.log($(this).attr("value")); //doesn't work
});
如果在控制台中同时记录它们,e.target.value
将返回我的input
字段而不是第二个字段。可以解释为什么会这样吗?
答案 0 :(得分:2)
$(this).attr("value"); //can access only default value
例如,
<input type="text" id="signUpEmail" value="email"/>
$(this).attr("value"); //returns email
而是使用 prop()
$(this).prop("value"); //for getting dynamic values
例如:
<input type="text" id="signUpEmail" />
$(this).prop("value"); //returns whatever you press
$(this).attr("value"); //returns undefined
答案 1 :(得分:2)
可以解释为什么会这样吗?
e.target.value
访问 DOM属性,它始终代表输入字段的当前值。
另一方面,$(this).attr("value")
访问 HTML属性,这是HTML标记中指定的输入值。当用户更改值时,它不会更新。
您可以使用$(this).prop('value')
通过jQuery访问该属性,但如前所述,.val
是执行此操作的常用方法。
答案 2 :(得分:1)
在jQuery中获取输入字段的文本:
$(this).val();
和标签:
$(this).text();
答案 3 :(得分:1)
您正在获取值属性,它表示默认值而不是当前值。
使用val()
方法代替attr()
。
$(this).val()
答案 4 :(得分:0)
正确的jquery语法是
$(this).val()