2011-11-10 12 views
0

私はあるdiv内のAリンクのすべてのID属性を取得し、それらをフォームの隠しフォームフィールドに添付して提出する必要があるフォームのページを持っています。どうすればいい?jQueryはフォーム提出の前にIDを取得します

すなわち

<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

BTW:ID **は数字で始めるのではなく、文字で始める必要があります。 [W3を参照](http://www.w3.org/TR/html4/types.html#type-name) – Thorsten

+0

@Thorsten - HTML5 '<!DOCTYPE html> doctypeを使用しない限り、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"); 
}); 

あなたは、a要素のセットを反復するeachを使用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); 
関連する問題