2013-07-23 90 views
1

我在頁面上有很多項目,一個人可以查看每個項目。當他們點擊「審查」時,一個燈箱將打開一張表格來填寫。要知道正在審覈的內容,我將項目名稱傳遞給表單域。但是我無法讓數據通過。將數據傳遞給表格字段

如何將項目名稱傳遞給表單?

這裏是試圖代碼:

HTML

<div class="element indica" data-category="indica"> 
    <p class="type">I</p> 
    <h2 class="name">Name</h2> <!-- Information I want to pass --> 
    <p class="strain-info">Information Here</p> 
    <p class="review"><a class="fancy_button review-form-lb" href="#review-form-lightbox"><span style="background-color: #000;">Review Strain</span></a></p> 
</div> 

表單代碼

<!-- I omitted form code not relevant to question. --> 
<input name="CAT_Custom_365569" type="text" class="cat_textbox" id="CAT_Custom_365569" value=" " maxlength="4000" readonly="readonly" /> 

JS

$('.fancy_button').click(function(){ 
    var strain = $(this).prev('h2').text(); 
    $('#CAT_Custom_365569').val(strain); 
}); 

回答

2

prev選擇立即以前的兄弟,所以它不會工作你的情況。通過選擇器意味着「只有在匹配的情況下才抓住前一個兄弟」。試試這個:

var strain = $(this).closest('div').find('h2').text(); 
+0

我知道這很簡單,我忽略了。謝謝您的幫助。很棒。 – L84

1

@elclanrs是正確的選擇上一張立即以前的兄弟,當你給它一個選擇它驗證了先前符合選擇標準。

這是另一種實現您想要的結果的方法。

$('.fancy_button').click(function(){ 
    var strain = $(this).parent().siblings('h2').text(); 
    $('#CAT_Custom_365569').val(strain); 
}); 
0

類別選擇符以點爲前綴。

$(".element indica").find('.name').val(); 
1

這裏是我會做什麼:

當輸出HTML,添加一個名爲「數據名」新屬性的一個元素:那麼在您的單擊處理

<a data-name="the name" class="fancy_button review-form-lb" href="#review-form-lightbox"><span style="background-color: #000;">Review Strain</span></a> 

,做到這一點:

$('.fancy_button').click(function(){ 
    var strain = encodeURIComponent($(this).attr('data-name')); 
    $('#CAT_Custom_365569').val(strain); 
}); 

這裏的好處是,你不必依賴鏈接之外的一些標記th在未來可能會改變。我還編碼的名稱值,以防萬一有人物可能會搞砸......可能會或可能不適用。

+0

根據名稱的可能值,您可能想要在data-name屬性中對名稱進行編碼,然後您不必在js單擊處理程序中進行encodeURIComponent。 – Redtopia