【问题标题】:How to get form elements by name in jquery?如何在 jquery 中按名称获取表单元素?
【发布时间】:2014-07-16 13:09:34
【问题描述】:

我有这个表格

var sformElem = $('form[name="search_form"]')[0];

我可以通过

访问 name say 'fieldname' 的表单元素
var inputField = sformElem.fieldname;

    if (inputField) {  // true
    alert("this is true"); 
    } 

但是当我尝试使用 jquery 的 val() 方法访问该值时,javascript 崩溃了。

inputField.val() 未定义。

但是执行 inputField.value 会返回值

为什么 val() 方法不起作用? 我在哪里犯错? 另外,请建议最合适的按名称访问表单元素。

我知道的一种方法是

$("#form2 input[name=name]")

但这里我们通过 id 获取表单并通过名称获取输入字段。

我想按名称获取表单和表单元素。

【问题讨论】:

  • 也发布您的 HTML...
  • .val() 是一个 jQuery 方法,而 sFormElem.fieldname 是一个普通的 DOM 元素。
  • 使用var sformElem = $('form[name="search_form"],input[name="name"]'); 按名称获取表单及其输入元素。或者只是var sformElem = $('[name="search_form"],[name="name"]');

标签: jquery


【解决方案1】:

为什么 val() 方法不起作用?

inputField.val() 返回“未定义”,因为inputField 是 DOM 元素而不是 jQuery 对象。 DOM 元素没有 val() 方法。所以错误是正确的。

您需要将其转换为 jQuery 对象。喜欢

$(inputField).val()

我想按名称获取表单和表单元素。

var elem = $('form[name="search_form"] input[name=name]');

【讨论】:

  • @Satpal 你确定inputField 是一个DOM 元素吗?对我来说看起来更像是一个普通的字符串。这就是你被否决的原因吗?我不知道;不是专家。
  • @GreatBigBore,当然 inputField 是一个 DOM 元素。
【解决方案2】:

执行$(inputField).val(),因为这会将 DOM 元素传递给 jQuery,然后使 val 可用

【讨论】:

    【解决方案3】:
    var x = $("form[name = "search_form"]).get(0)
    
    $("form[name = "search_form"]).get(0)
    

    因为它不是 jquery 对象,所以 val 将不起作用。要使用 val,您必须将其设为 jquery 对象。

    喜欢

    $(x).val();
    

    有了这个你会得到 DOM 元素

    【讨论】:

      【解决方案4】:

      通过使用来完成它

      $('inputField id or class').attr('attribute');
      

      可以通过.attr() 方法调用类或输入字段值,以便您可以在某个变量中拥有该值。

      【讨论】:

      • 这篇文章因为太短而被自动标记为低质量。您介意通过添加一些文本来解释它是如何解决问题的吗?
      猜你喜欢
      • 2011-11-07
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多