jQuery在输入文本上显示空字符串?

时间:2013-11-28 11:58:41

标签: jquery html

我有一个这样的表格

<form action="">
  <label for="name">Name</label>
  <input type="text" id="name" />
</form>


<script type="text/javascript">
  jQuery(document).ready(function() {
    var Name = jQuery('#name').val();
    jQuery('#name').blur(function() {
      console.log(Name);
    });
  });
</script>

但是当我在输入文本字段中输入任何值时,它显示的错误就像 (an empty string)。所以有人能告诉我这里有什么不对吗?怎么解决这个问题?

5 个答案:

答案 0 :(得分:4)

<input type="text" id="name />

应该是

<input type="text" id="name" />

工作小提琴:http://jsfiddle.net/TdLH2/

答案 1 :(得分:3)

这一行:

var Name = jQuery('#name').val();

是一次性操作,将Name的值设置为该代码执行时的输入值。当该元素的值发生变化时,会神奇地更新Name的值(为什么这么多人会得到这样的印象?)。你需要这样做:

jQuery(document).ready(function () {
    jQuery('#name').blur(function () {
        console.log(this.value);
    });
});

我已经删除了现在没有意义的Name变量,并且直接使用元素引用(this)来获取其value属性而不是使用jQuery函数。

答案 2 :(得分:2)

名称变量应该在onblur处理程序中设置:

jQuery('#name').blur(function () {
    var Name = jQuery(this).val(); //or this.value
    console.log(Name);
});

答案 3 :(得分:0)

尝试

<form action="">
  <label for="name">Name</label>
  <input type="text" id="name" />
</form>


<script type="text/javascript">
  jQuery(document).ready(function()
   {
    jQuery('#name').blur(function () {
    var Name = jQuery("#name").val();
    jQuery("#name").blur(function() 
     {
      console.log(Name);
    });
   });
  });
</script>

答案 4 :(得分:0)

如果你想在console.log中输入任何内容,你可以这样做:

<script>
  jQuery(document).ready(function() {
    jQuery('#name').keyup(function() {
        var Name = jQuery('#name').val();
        console.log(Name);
    });
  });
</script>

目前,您在页面加载时获得#name的值,该值为"",为空字符串。没有输入任何内容。