jQuery захватывает идентификаторы перед отправкой формы - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть страница с формой, где мне нужно собрать все атрибуты идентификатора ссылок А в определенном div и прикрепить их к форме в скрытом поле формы перед отправкой.Как я могу это сделать?

т.е.

<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>

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2011

Что-то вроде этого должно помочь вам начать:

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

Вы можете использовать each для перебора набора элементов a, создать строку, содержащую значения id, и использовать val для установки значение скрытого элемента ввода для этой строки. В приведенном выше примере вы получите разделенную запятыми строку с запятой. Я не знаю точно, что вы ищете, так что вы можете изменить это.

1 голос
/ 10 ноября 2011

Вы можете использовать функцию append для создания новых скрытых полей.

То есть обвести все теги a в получателях и добавить новое скрытое поле:

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

Примечание: вы не сказали, каким хотите имя и значение скрытых полей, поэтому я догадался, используя this.id для имени и $ (это). text () для значения.

0 голосов
/ 10 ноября 2011
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);
...