在按钮单击时查找自动生成的文本框ID

时间:2015-09-02 07:08:57

标签: javascript jquery

<td id="RB_0_val_1">
<label for="RB_0_value_field_1" style="display:none;">Field   Value</label>   
<input type="text" id="RB_0_value_field_1"></td>
<td id="RB_0_extra_1"><input type="button" value="Select.." id="File"></td>

现在我需要在点击按钮时找到文本框的ID。所以我正在使用

 var  textboxid=$('input[id="File"]').closest('input[type="text"]').attr("id");

但返回的值未定义。 文本框的ID是自动生成的,所以我需要在单击按钮时找到id。 怎么做?

7 个答案:

答案 0 :(得分:1)

尝试使用.parentsUntil:has()

$("#File").click(function() {
var textboxid = $(this).parentsUntil("td:has(:text)").find(":text").attr("id")
console.log(textboxid)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td id="RB_0_val_1">
        <label for="RB_0_value_field_1" style="display:none;">Field Value</label>
        <input type="text" id="RB_0_value_field_1">
      </td>
      <td id="RB_0_extra_1">
        <input type="button" value="Select.." id="File">
      </td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:1)

请用我的代码替换您的代码,只需添加prev()函数。

var textboxid=$('input[id="File"]').prev().closest('input[type="text"]').attr("id");

答案 2 :(得分:1)

你可以使用jquery .prev() api来做到这一点。试试FIDDLE

Javascript代码

$(document).ready(function(){
    $('#File').click(function(e){
        console.log($(this).prev('input[type=text]').prop('id'));
        alert($(this).prev('input[type=text]').prop('id'));
        e.preventDefault();
    });
});

编辑:对于FIDDLE中提供的更新标记,我使用了.closest() .prev().find() jquery api

    $(document).ready(function () {
        $('#File').click(function (e) {
               var id = $(this).closest('td').prev('td').find('input[type=text]').prop('id');    
               alert(id);
               e.preventDefault();
        });
    });

希望这会有所帮助.....

答案 3 :(得分:0)

我认为tds在tr里面。

您可以制作此选择器

var  textboxid=$('input#File').parents('tr').find('label + input').attr("id");

答案 4 :(得分:0)

试试这个(还没试过):

=INDEX(B2:D2,MATCH(1, SIGN(LEN(B2:D2)), 0))
=INDEX(B2:D2,MATCH(0, --ISBLANK(B2:D2), 0))
=INDEX(B2:D2,MATCH(FALSE, ISBLANK(B2:D2), 0))

是否应该通过点击或某事触发?

答案 5 :(得分:0)

问题是文本框在不同的td中,试试这个:

&#13;
&#13;
$(function() {
  $('#File').on('click', function() {
    alert($(this).parent().prev('td').children('input[type=text]').prop('id'));
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table>
  <tr>
    <td id="RB_0_val_1">
      <label for="RB_0_value_field_1" style="display:none;">Field Value</label>
      <input type="text" id="RB_0_value_field_1">
    </td>
    <td id="RB_0_extra_1">
      <input type="button" value="Select.." id="File">
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 6 :(得分:-1)

FIDDLE

 $$(document).on('click', '#File', function() {
var qwe = $(this).parent().parent().find('input[type="text"]');
            alert(qwe.attr('id'));
    });