在下面的代码中.val()
返回无结果,.length
始终为输入的输入返回'1'。我哪里错了?
以下是HTML文件
<html>
<head>
<title>Page Title</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
</head>
<body>
<form>
<input type="text" name="my_name" id="my_name" >
<button type="submit" id="submit_btn1" name="submit" >Submit</button>
</form>
</body>
</html>
以下是Javascript文件
<script>
$(function(){
var value = $("#my_name").val();
var name_length=$('#my_name').length;
$('#my_name').keyup(function(){
alert(name_length);
alert(value);
});
});
</script>
答案 0 :(得分:3)
当没有值时,你抓住val
。该变量不会自动更新。这就是keyup
函数的用途:
$('#my_name').keyup(function(){
alert(this.value);
});
根据length
,这是按预期工作的。您的选择器返回一个匹配元素数组,该数组的长度为1。
修改:根据评论,如果您确实要查看输入值的长度,请使用this.value.length
答案 1 :(得分:1)
这是因为当您将Element分配给变量时,它的值为''。您必须在事件发生时获取元素,例如:
<script type='text/javascript'>
$(function(){
$('#my_name').keyup(function(){
var mn = $('#my_name'), value = mn.val(), name_length= mn.length;
alert(name_length);
alert(value);
});
});
</script>
答案 2 :(得分:1)
我认为你需要这样:
HTML:
<form id="form">
<input type="text" name="my_name" id="my_name" />
<input type="submit" value="submit" />
</form>
jQuery :(使用submit
函数)
$(document).ready(function(){
$("#form").on("submit", function(){
var inputValue = $("#my_name").val(),
inputLength = $("#my_name").val().length;
alert(inputValue);
alert(inputLength);
return false;
});
});
或keyup
函数:
$(document).ready(function(){
$("#my_name").on("keyup", function(){
var inputValue = $("#my_name").val(),
inputLength = $("#my_name").val().length;
alert(inputValue);
alert(inputLength);
});
});