jquery .val()和.length方法无法正常工作

时间:2013-11-13 01:44:55

标签: javascript jquery

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

3 个答案:

答案 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函数)

LIVE DEMO 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函数:

LIVE DEMO 2

$(document).ready(function(){

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

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

    alert(inputValue);
    alert(inputLength);

  });  
});