-1

在下面的代码中.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>
4

3 回答 3

3

val当没有价值时,您正在抓住。该变量不会自动更新。这就是该keyup功能的用途:

$('#my_name').keyup(function(){
    alert(this.value);
});

根据length,这是按预期工作的。您的选择器返回一个匹配元素的数组,该数组的长度为 1。

编辑:根据评论,如果您真的想检查输入值的长度,请使用this.value.length

于 2013-11-13T01:47:22.697 回答
2

这是因为当您将元素分配给变量时,它的值为 ''。您必须在事件发生时获取元素,例如:

$(function(){ // load
var mn = $('my_name');
mn.keyup(function(){
  var value = mn.val(), name_length = mn.length;
  console.log(value); console.log(name_length);
});
}); // end load
于 2013-11-13T01:50:34.033 回答
1

我认为你需要这样:

HTML:

<form id="form">  
  <input type="text" name="my_name" id="my_name" />    
  <input type="submit" value="submit" />
</form>

jQuery:(带submit功能)

现场演示 1

$(document).ready(function(){

  $("#form").on("submit", function(){

    var inputValue  = $("#my_name").val(),
        inputLength = $("#my_name").val().length;

    alert(inputValue);
    alert(inputLength);

  return false; 
  });  
});

或具有keyup功能:

现场演示 2

$(document).ready(function(){

  $("#my_name").on("keyup", function(){

    var inputValue  = $("#my_name").val(),
        inputLength = $("#my_name").val().length;

    alert(inputValue);
    alert(inputLength);

  });  
});
于 2013-11-13T02:16:30.993 回答