2011-01-27 81 views
3

我有一个名称相同但ID不同的表单。我能够serializearray,但无法获取当前ID。我们可以从具有相同名称的多个元素使用序列化数组获得id

<form action="test.php" id="loginform" name="loginform" method="post"> 
    <input name="title[]" id="title1" type="text" value="" tabindex="1" /> 
    <input name="title[]" id="title2" type="text" value="" tabindex="2" /> 
    <input name="title[]" id="title3" type="text" value="" tabindex="3" /> 
    <input type="submit" name="submit" value="Submit" id="submit" tabindex="4" /> 
</form> 

$('#loginform').bind('submit', function() { 
    var elements = $(this).serializeArray(); 
    $.each(elements, function(i, element) { 
     var temp = $('#' + element['name']); 
     var name = this.name; alert(name); 
var id = $(this).attr("id");alert(id); 
     (temp.val() == '') ? temp.css({'background': '#FFC4C4', 'border': '1px solid #F00'}) : temp.removeClass('hightlight'); 
    }); 
    return false; 
}); 

我得到的名字,但没有任何人id.Can看这个....

Demo

回答

0

.serializeArray()将返回唯一的名字和每个对象的值。因此,迭代集合不会为您带来价值。

.serializeArray()

编码的一组表格的元素作为 阵列的名称和值的。

+0

我知道.serializeArray()将只返回名称和值对,但这指的是当前element.So从那里我们可以找回ID? – 2011-01-27 11:47:32

2

我明白你的问题,但我不是100%肯定。如果我的理解是正确的,那么您正试图迭代您的输入并获取每个输入的ID属性。

如果这就是你所需要做的,那么实现它就更简单了。

$('#loginform').submit(function(ev) { 
    $('input[type=text]', this).each(function(index, element) { 
     alert($(element).attr('id')); 
    }); 
    ev.preventDefault(); 
}); 

所以,一个快速的故障:

  • 首先,$('input[type=text]', this)会从我们提交表单的所有文本输入。
  • 然后,我们使用.each()来遍历它们。
  • 对于每个element,我们使用.attr()来获取ID,并将其传递给alert()以向用户显示。

Updated Demo

+0

P.S.如果这回答你的问题,请接受它! – 2012-10-16 15:54:44

相关问题