присвоение значения массива скрытому полю в jquery - PullRequest
4 голосов
/ 08 мая 2011

Конечно, я упускаю что-то простое здесь. Я пытаюсь присвоить значение скрытому полю с помощью jquery. Он ничего не возвращает, и я попробовал несколько вещей. У меня есть массив в форме с именем personemail [], и он соответственно идентифицирует и называет поля, personemail [0], personemail [1] и т. Д., И я хочу извлечь первый указанный адрес электронной почты и назначить его скрытому полю с именем person_email.

    <script type="text/javascript" charset="utf-8">
    jQuery(document).ready(function() {
    var emailvalue = jQuery('#personemail[0]').val();
    jQuery('#person_email').val(emailvalue);
    });
</script>

Я новичок в jquery, так что это немного загадка относительно того, что мне не хватает. мне нужно использовать .change () на #emailperson []? Я предполагаю, что мне нужно разбить массив, чтобы получить значение, но я не уверен, как. Я просто не могу заставить эту часть работать.

Вот данные поста

Array ( [person_name] => max 
        [person_email] => 
        [person_phone] => 111-1111 
        [booking_seats] => 1 
        [personname] => Array ( [0] => max ) 
        [personemail] => Array ( [0] => max@max.com ) 
        [booking_comment] => 
        [eventAction] => add_booking 
        [event_id] => 14 )

Как вы можете видеть, я получаю адрес электронной почты в массив просто отлично, я просто не могу заставить его придерживаться person_email

Вот запрашиваемая парная версия HTML, язык на стороне сервера - php. Входные данные генерируются с помощью функции jquery clone, которую я написал. Выкладывает HTML-элемент для каждого нового человека на основе раскрывающегося списка для числа выбранных людей:

<form id='rsvp-form' name='booking-form' method='post' action='<?php echo $destination ?>'>          
    <tr class="personrow">
    <th scope="row"></th><td>Name:<br><input class="required person" type="text" name="personname[0]" /><br>Email:<br><input class="required email additional" type="text" name="personemail[0]" id="personemail[0]" /></td><td class="theextra"></td>
</tr>       
<input type='hidden' name='person_email' id='person_email' />
<input type='submit' class='blkBTN' value='<?php _e('Book It!', 'dbem') ?>'/>&nbsp;&nbsp;&nbsp;&nbsp;
<input type='hidden' name='eventAction' value='add_booking'/>
<input type='hidden' name='event_id' value='<?php echo $EM_Event->id; ?>'/>

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 мая 2011

Мне кажется, что вы пытаетесь подготовить входные данные к документу - до его отправки. В этот момент нечего читать в поле ввода. То, что я сделал бы, это сделаю это на представлении, что-то вроде этого

$("#rsvp-form").submit(function(event){
    event.preventDefault(); //stop the form from submitting, you'll do it later
    var emailvalue = $("personemail\\[0\\]").val();
    $("#person_email").val(emailvalue);
    $("#rsvp-form").submit(); //you got the hidden input value, now submit the form
});

Вот пример jsfiddle http://jsfiddle.net/x6dPd/

edit: в примере была опечатка.

0 голосов
/ 08 мая 2011

Вы должны избегать скобок в вашем селекторе (с обратной косой чертой), потому что скобки - это специальные символы в селекторах jquery.Таким образом, вы должны иметь:

var emailvalue = jQuery('#personemail\\[0\\]').val();

Надеюсь, это поможет.Приветствия.

...