Javascript jquery.val()和.length方法未按预期工作

Javascript jquery.val()和.length方法未按预期工作,javascript,jquery,Javascript,Jquery,在下面的代码中,.val()不返回任何结果,.length始终为键入的任何输入返回“1”。我哪里做错了 下面是HTML文件 页面标题 提交 下面是Javascript文件 <script> $(function(){ var value = $("#my_name").val(); var name_length=$('#my_name').length; $('#my_name').ke

在下面的代码中,
.val()
不返回任何结果,
.length
始终为键入的任何输入返回“1”。我哪里做错了

下面是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>

$(函数(){
var值=$(“#我的名字”).val();
var name_length=$(“#我的名字”).length;
$(“#我的名字”).keyup(函数(){
警报(名称和长度);
警报(值);
});
});

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

$('#my_name').keyup(function(){
    alert(this.value);
});
根据
长度
,这是按预期工作的。选择器正在返回匹配元素的数组,该数组的长度为1


编辑:根据注释,如果您实际上希望检查输入值的长度,请使用
this.value.length

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

$(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

我想你需要这样:

HTML:

或使用
keyup
功能:


在这里工作,享受演示的乐趣
:)
“name\u length”将始终返回1,因为您在选择器中使用的元素ID在您的page@Tats_innit-没有工作的
:)
。。。至少对于我来说,我认为op想要检查
这个.value的长度
this.value.length
@Reigel——编辑答案以包含您的代码片段,谢谢!
$(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
<form id="form">  
  <input type="text" name="my_name" id="my_name" />    
  <input type="submit" value="submit" />
</form>
$(document).ready(function(){

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

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

    alert(inputValue);
    alert(inputLength);

  return false; 
  });  
});
$(document).ready(function(){

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

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

    alert(inputValue);
    alert(inputLength);

  });  
});