2011-01-27 51 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

相關問題