Jquery:元素值不正确

时间:2013-09-14 10:02:54

标签: jquery

我尝试在提交之前获取所有输入元素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

这可能是什么问题?

2 个答案:

答案 0 :(得分: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代替alertread more
  • ,生活更轻松

所以我建议这个

$('#mform1').submit(function(){
        $( "input[name='choices']" ).each(function(){
            console.log(this.value);
        });
});

答案 1 :(得分:0)

尝试:

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

DEMO FIDDLE

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