2013-11-28 31 views
0

我有这样jQuery显示输入文本上的空字符串?

<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)错误的一种形式。那么有人可以告诉我这里有什么问题吗?如何解决这个问题?

+4

您没有关闭输入的id,也没有使用空的'action'标签。 – MikaldL

+0

是的,关于ID的关闭,但空操作很好。它只是假设当前的网址,如果它没有通过一个。 – Archer

回答

3

这条线:

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

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

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

我剪了现在毫无意义Name变量,只是使用的元素引用(this)直接得到它的价值属性,而不是使用jQuery功能。

+0

很好解释! –

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

应该

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

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

+1

我认为你的回答不正确,OP可能有输入错误,请在有人投票或选择标志之前更正答案 – Vamsi

+0

你是对的,它无法在模糊函数外访问Name变量。 – feddus

2

名称变量应的onblur处理程序中进行设置:

jQuery('#name').blur(function() { 
    var Name = jQuery(this).val(); //or this.value 
    console.log(Name); 
}); 
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> 
0

如果你想CONSOLE.LOG无论是键入到框中,你可以这样做:

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

此刻,你得到的#name在页面加载的值,这将是"",一个空的字符串。因为什么都没有输入。

相关问题