2011-05-07 39 views
4

當然,我在這裏錯過了一些簡單的東西。我試圖通過jQuery將值分配給隱藏字段。它一直沒有返回,我嘗試了幾件事情。我在名爲personemail []的表單上有一個數組,並且它相應地命名字段,personemail [0],personemail [1]等,我想提取列出的第一個電子郵件地址並將其分配給名爲person_email的隱藏字段。將數組值賦給jquery中的隱藏字段

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

我是jquery的新手,所以這對於我失蹤的事情來說有點神祕。我需要使用#emailperson []上的.change()嗎?我假設我需要打入陣列來獲取價值,但我不確定如何。我只是無法讓這部分工作。

這裏是POST數據

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

正如你可以看到我獲得的電子郵件地址,入陣就好了,我只是不能讓它堅持person_email

下面是一個配對下載版本的HTML問,服務器端語言是PHP。輸入是通過我寫的jquery克隆函數生成的。吐出來選擇基於下拉的人數每一個新的人一個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; ?>'/> 

感謝

+1

你的HTML看起來像什麼? – eagerMoose 2011-05-07 20:16:14

+0

這個數組在表單上看起來像什麼?單獨的文本框? – 2011-05-07 20:18:47

+0

服務器端的哪種語言?並顯示HTML代碼閱讀此:http://api.jquery.com/hidden-selector/這可能會幫助你 – diEcho 2011-05-07 20:20:32

回答

0

在我看來,您正在嘗試在文檔準備好之前獲取輸入數據 - 在提交之前。在那一刻,輸入字段中沒有任何內容可以讀取。我會做的就是這樣做的onsubmit,像這樣

$("#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/

編輯:有一個在例如一個錯字。

+0

這會導致.submit()上的遞歸錯誤;在提交功能內。它只是循環,停止提交,反覆設置值。值設置後避免preventDefault的最佳方法是什麼?也許一個綁定到提交的防止默認的函數可以在值更改後解除綁定? – Max 2011-05-09 15:37:45

+0

我打算接受這個答案,並開始一個與遞歸有關的新問題,因爲它實際上與我原來的問題不同。謝謝! – Max 2011-05-09 16:17:50

0

你應該逃避你的選擇括號(用反斜槓),因爲括號jquery選擇器中的特殊字符。所以你應該有:

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

希望這會有所幫助。乾杯。

+0

感謝您的建議。特殊字符是有意義的,但是當我做出改變時它不會影響任何東西。 – Max 2011-05-07 21:35:36