【问题标题】:jQuery: How to get text in a control if value attribute is undefined?jQuery:如果值属性未定义,如何在控件中获取文本?
【发布时间】:2014-03-05 00:00:38
【问题描述】:

我有一个简单的帐号和密码表格。我可以在一个函数中提交表单,该函数将表单序列化并将其发送到 Web API 控制器,并且帐号和密码作为我创建的小模型中的属性接收。所以效果很好。但我想访问用户在页面本身上键入的号码,但我不知道该怎么做 - 我尝试使用 var accountNo = $('#account').val() 但 accountNo 未定义。

我发现的所有示例都在 HTML 中设置了 'value' 属性,硬编码或使用 .val('someValue') 设置。但它可以让用户输入文本然后序列化表单,将 value 属性留空。那么如何获取用户输入的文本呢?

我在 jsFiddle 上放了一个示例:http://jsfiddle.net/xZVzC/1/

<input name="account" type="text" placeholder="Enter Account Number">

$(function() {
  var accountNo = $('#account').val();   
  console.log('Account: ' + accountNo);
});

【问题讨论】:

    标签: jquery


    【解决方案1】:

    你的选择器错了

    更改您的 html 有一个 id=account,因为您正在使用 # id-selector $('#account').val(); 但在您的 html 中没有 id 属性。

    <input id="account" name="account" type="text" placeholder="Enter Account Number">
    

    Fiddle Demo


    或者

    将您的选择器更改为

    var accountNo = $('input[name="account"]').val();
    

    Attribute Equals Selector [name="value"]

    【讨论】:

      【解决方案2】:

      Ypu 目前缺少您输入的 id,因此您需要按名称选择输入:

      var accountNo = $('input[name="account"]').val();   
      

      代替:

      var accountNo = $('#account').val();   
      

      或在您的输入中添加id 属性:

      <input id= "account" name="account" type="text" placeholder="Enter Account Number">
      

      您还可以使用 change() 事件来跟踪您的输入值何时更改:

      $('input[name="account"]').change(function() {
          var accountNo = $(this).val();
          console.log('Account: ' + accountNo);
      }); 
      

      Updated Fiddle

      或在用户完成输入时使用 keyup() 事件:

      $('input[name="account"]').keyup(function() {
          var accountNo = $(this).val();
          console.log('Account: ' + accountNo);
      }); 
      

      Fiddle Demo

      【讨论】:

      • change() 和 keyup() 事件很有趣。显然,我不是 jQuery 专家,这很有帮助。我正在关注使用 Web API 的 Microsoft 站点的示例,输入控件没有 id 字段,只有名称,它自动工作。回想起来,这对我来说应该是显而易见的!
      【解决方案3】:

      您在该字段上没有 ID,请使用属性选择器:

      var accountNo = $('input:text[name=account]').val(); 
      

      【讨论】:

        猜你喜欢
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多