值在输入字段中返回空?

时间:2013-11-29 11:08:29

标签: javascript events input target

我有一个input字段会缓存它的value属性,请看下面的示例:

$("#signUpEmail").keyup(function(e) {
    console.log(e.target.value); //work
    console.log($(this).attr("value")); //doesn't work
});

如果在控制台中同时记录它们,e.target.value将返回我的input字段而不是第二个字段。可以解释为什么会这样吗?

5 个答案:

答案 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()