2011-11-10 99 views
0

我有一個表單的頁面,我需要抓取某個div中A鏈接的所有ID屬性,並在提交之前將這些鏈接附加到表單的隱藏表單字段中。我該怎麼做?jQuery抓取表單提交之前

<form action="/myaction" id="myForm"> 
<div id="recipients"> 
<a id="1">recipient one</a> 
<a id="2">recipient two</a> 
<a id="3">recipient three</a> 
</div> 
<a href="javascript:void(0)" id="sendMail">Send</a> 
</form> 

<script> 
//Capture form before sending 
$("#sendMail").click(function() { 
//Do something here to loop over the a tags in the recipients div, 
//and add as a list to a new hidden form field   
$('#myForm').trigger('submit'); 
}); 
</script> 

任何想法?

+0

順便說一句:ID **不能**以數字開頭,而是以字母開頭。 [見W3](http://www.w3.org/TR/html4/types.html#type-name) – Thorsten

+0

@Thorsten - 除非您使用HTML5'<!DOCTYPE html>'doctype –

+0

@James jQuery有問題在選擇器中使用以數字開頭的ID - 至少它達到了1.7,不知道現在HTML5是否允許這樣做。 –

回答

2

東西沿着這些路線應該讓你開始:

$("#sendMail").click(function() { 
    var recipients = ""; 
    $("#recipients a").each(function() { 
     recpients += this.id + ","; 
    }); 
    $("#someHiddenField").val(recipients); 
    $("#myForm").trigger("submit"); 
}); 

您可以使用each遍歷集合a元素,打造出包含id值的字符串,並使用val設置的值該字符串的隱藏輸入元素。在上面的例子中,您將得到一個逗號分隔的字符串,並帶有尾隨逗號。我不知道你在找什麼,所以你可能想改變它。

+0

這不會創建一個新的隱藏字段,並假定這些字段已經在DOM中。 – Connell

+0

是的,的確如此。我的答案中的代碼僅僅是作爲一個起點。我懷疑OP要隱藏輸入值中的尾隨逗號,但這應該是一個很好的起點。 –

+0

太棒了,這是我需要它做的!歡呼 – Neokoenig

1

您可以使用append函數來創建新的隱藏字段。

所以循環圓所有a標籤收件人,並追加了新的隱藏字段:

$("#recipients a").each(function() { 
    $("#myform").append('<input type="hidden" name="'+this.id+'" value="'+$(this).text()+'" />') 
}); 

注:你沒有說你想要的隱藏字段的名稱和值是,所以我猜想在this.id的名字和$(this).text()的價值。

0
try this 

var Anchors = $("body").find("a") 
var str = ""; 
    alert(Anchors.length); 

    $(Anchors).each(function(){ 
     if(str !== ""){ 
      str+=","; 
     } 

     str+=$(this).attr("id"); 
    }) 

$("sometextfieldid").val(str);