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

时间:2014-01-28 13:33:54

标签: jquery forms input

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

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

(没关系'select'字段,这是一个自定义选择框,我将不得不处理那个) 我在表单更改事件上执行捕获。 输入字段都有正确的ID,它们看起来像这样:

<input type="text" id="name">
<input type="email" id="email">
<textarea name="message" id="message"></textarea>

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

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

4 个答案:

答案 0 :(得分:26)

我已经弄清楚了。

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

不,您不必同时具有val的name和id属性。 我测试过它,只有id,.val()工作正常

答案 3 :(得分:1)

感谢@nick-dickinson-wilde 的评论。 我有同样的问题。我想获得以下输入的值。

<input id="ipValue" class="form-control" type="text" value="@Model.IPValue" />

我很惊讶以下不起作用。

javascript var ipValue = $("#ipValue").val();

我没有注意到我有一个具有相同 ID <div class="col-3" id="ipValue">

的元素