我正在尝试捕获输入字段的值,并在我的表单类中使用以下方法来执行此操作:
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事件,我怀疑这是问题。
答案 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">