jQuery .val()不适用于输入字段

Nic*_*las 18 forms jquery input

我正在尝试捕获输入字段的值,并在我的表单类中使用以下方法来执行此操作:

getData: function() {
    var fields = ['name', 'email', 'message'];
    $.each(fields, function(index, el) {
        form.data[el] = $('#'+el).val();
        console.log(form.data[el]);
    });
},
Run Code Online (Sandbox Code Playgroud)

(永远不要选择'select'字段,这是一个自定义选择框,我将不得不以不同的方式处理它)我在表单更改事件上执行捕获.输入字段都有正确的ID,它们看起来像这样:

<input type="text" id="name">
<input type="email" id="email">
<textarea name="message" id="message"></textarea>
Run Code Online (Sandbox Code Playgroud)

现在,当我在字段中输入内容时,我只从textarea中获取值,而其他输入则给我未定义.

我还会注意到表单正在加载Ajax,但由于它捕获了字段上的change事件,我怀疑这是问题所在.

Nic*_*las 28

我已经弄清楚了.

我在输入字段上缺少name属性,由于某种原因.val()需要它才能工作.

  • 这对我也有用,如果有人能解释*为什么*,我将不胜感激. (6认同)

小智 7

"根据W3C的建议,如果输入字段具有控件名,则html for只能发送数据.Ids不计算." 嗯,这一切都很好(实际上是无价的),但如果你看一下这个例子,jQuery .val()就会有人相信它可以愉快地使用它id=作为选择器.我的测试表明,不仅必须有,而且必须相同.当它工作时,我非常喜欢这些东西!id=name=