2013-07-23 55 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