我们可以使用序列化数组从具有相同名称的多个元素中获取id

时间:2011-01-27 11:20:14

标签: jquery forms 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。任何人都可以看到这个....

Demo

2 个答案:

答案 0 :(得分:2)

我理解你的问题,但我不是百分之百确定。如果我的理解是正确的,那么您正在尝试迭代输入并获取每个输入的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

答案 1 :(得分:0)

.serializeArray()将仅返回每个对象的名称和值。因此,遍历集合将无法获得价值。

.serializeArray()

  

将一组表单元素编码为   名称和值的数组。