0

我有一个带有重复元素集的表单。

当带有类的选择credit_req_select发生变化时,我想显示/隐藏并可能清除带有类的下一个文本输入credit_line_text

下面的 change() 函数没有找到文本字段,我认为它必须与我使用$(this).

获取这些文本字段的正确方法是什么?

我的 HTML 是

<p class="file_info">*Credit Required: 
    <select name='default_credit_requirements' id='default_credit_requirements' class="credit_req_select">
<option></option>
<option value='1' selected>Do not include</option>
<option value='2' >Include if able</option>
<option value='3' >Must include</option>
</select>
    </p>
    <p class="file_info">
      <label>*Credit Line:
        <input  type="text" name="default_credit_line" id="default_credit_line" class="credit_line_text" value="" />
      </label>
    </p>

我的函数看起来像这样,与这里的答案相同Jquery next相邻选择器与 $(this)

$('.credit_req_select').change(function() {
    if(this.value > 1) {    
        $(this).next(".credit_line_text").show();
        console.log($(this).next(".credit_line_text").attr('id'));
    } else {
        $(this).next(".credit_line_text").val('');
        $(this).next(".credit_line_text").hide();   
    }
});

我也试过这个答案jquery next() 返回什么

$('.credit_req_select').change(function() {
    if(this.value > 1) {    
        $(this).nextUntil(".credit_line_text").show();
        console.log($(this).nextUntil(".credit_line_text").attr('id'));
    } else {
        $(this).nextUntil(".credit_line_text").val('');
        $(this).nextUntil(".credit_line_text").hide();  
    }
});

还尝试将其分配给每个jQuery $(this).next() 的 var 无法按预期工作

4

2 回答 2

2

尝试这个 -

$(this).closest('p.file_info').next().find(".credit_line_text")

由于您的输入已经有一个 ID default_credit_line,并且 ID 应该是唯一的,因此您可以使用它。

$('#default_credit_line').val("");
于 2013-05-28T20:57:47.237 回答
0

你真正应该做的是将每个包裹repeating set of elements在一些东西中。例如一个div与类element。然后您的选择查询将更容易阅读。

$(this).closest('.element').find(".credit_line_text")
于 2013-05-28T21:10:48.197 回答