0

我试图获取name="choices"提交之前的所有输入元素。我想在提交表单之前检查这些元素的值。问题不是得到 0 ,1 ,2 ,这是我得到的元素的值undefined(3次)。

形式

<form action="/check"  method="post" id="mform1" >
<div id="id_poll_choices" >
                A). <input type="text"  name="choices" value="0"><br>
                B). <input type="text"  name="choices" value="1"><br>
                C). <input type="text"  name="choices" value="2"><br>
            </div>  
<input type="submit" id="id_submit" value="Submit"/>
</form>

jQuery

$('#mform1').submit(function(){

            $( "input[name*='choices']" ).each(function(index, elm){
                alert(elm.val)
            });
    });

警报显示undefined

这里可能是什么问题?

4

2 回答 2

3

elm是一个 DOM 元素。它没有任何val财产。

代替

 alert(elm.val)

 alert($(elm).val())

或者

 alert(elm.value) // better

几点注意事项:

  • 还要注意 id :只有一个元素可以有一个给定的 id。

  • 您应该使用"input[name='choices']"而不是"input[name*='choices']"作为选择器。两者都在这里工作,但一个更快,更有选择性。除非您的元素当然应该有不同的名称(这是单选按钮的一般做法)

  • 元素this在回调中
  • 生活更轻松,console.log而不是alert阅读更多

所以我建议这个

$('#mform1').submit(function(){
        $( "input[name='choices']" ).each(function(){
            console.log(this.value);
        });
});
于 2013-09-14T10:04:21.090 回答
0

尝试:

$('#mform1').submit(function(){
            $( "input[name*='choices']" ).each(function(index, elm){
                alert(elm.value);
            });
    });

DEMO FIDDLE

注意:不要对所有输入使用相同的 id。ID应该是唯一的。

于 2013-09-14T10:05:25.440 回答