如何使用jquery查找下一个元素?

时间:2015-07-03 14:06:24

标签: javascript jquery html css

在我给出的例子中,我有两个文本框。当第一个文本框中的值发生更改时,我想找到下一个文本框(注意:没有id)并更改其值。

给出的示例仅包含单个文本框组。实际上它可以是多个文本框。 (来自&到财务数据的文本框)

所以,当文本框中的值(txtFinancialYearFrom)发生变化时,我想找到文本框(txtFinancialYearTo)并更改其值。

JsFiddle Link - Example

提前感谢您的帮助!!

<table class="fotm-table">                       

                    <tr>
                        <td class="text-right" width="120">
                            <span id="ContentPlaceHolder1_lblFinancialYear">Financial Data :</span>
                        </td>
                        <td>
                            <span>
                                <input type="text" id="txtFinancialYearFrom" 
                                name="ctl00$ContentPlaceHolder1$txtFinancialYearFrom">
                            </span>
                        </td>
                        <td width="20" align="center">
                            <span style="align-content: center">to</span>
                        </td>
                        <td>
                            <span>
                                <input type="text" id="txtFinancialYearTo" 
                                name="ctl00$ContentPlaceHolder1$txtFinancialYearTo">
                            </span>
                        </td>
                    </tr>                        
                </table>

3 个答案:

答案 0 :(得分:1)

使用给定的信息,因为你将有更多的块(应该是你的桌子上的行),这个解决方案应该有效:

$scope.accounts.findAllAccountsByRestaurant = function(restaurant) {   return alert(restaurant); };

代码从表中获取所有行,并且对于每个行,它将添加一个监听器,当您更改第一个文本框(输入)时,它将更改下一个文本框的值(此处它添加1到它)。

答案 1 :(得分:1)

如果我理解正确,你需要这样的东西:

&#13;
&#13;
/* Loop through all table rows */
$('tr','table.fotm-table').each(function() {
   var tr = this;
    /* Cache all inputs a jquery object - you may want to specify which type    of input you are targeting i.e. $('input[type="text"]') */
   var inputs = $('input',tr);
    /* Cache the slave (second in the example) input in a jquery   object - you can do the same for multiple inputs, simply by   modifying the eq() index parameter
    */
   var slaveInput = inputs.eq(1);
    /* Listen for changes on the master input */
   var masterInput = inputs.eq(0).on('change',function() {
   /* Do smt on the slave input - fill it with the next year in  the example */
       var year = $(this).val(); 
       var followingYear = parseInt(year,10)+1
       slaveInput.val(followingYear);
   });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="fotm-table">                       

                        <tr>
                            <td class="text-right" width="120">
                                <span id="ContentPlaceHolder1_lblFinancialYear">Financial Year :</span>
                            </td>
                            <td>
                                <span>
                                    <input type="text" id="txtFinancialYearFrom" 
									name="ctl00$ContentPlaceHolder1$txtFinancialYearFrom">
                                </span>
                            </td>
                            <td width="20" align="center">
                                <span style="align-content: center">to</span>
                            </td>
                            <td>
                                <span>
                                    <input type="text" id="txtFinancialYearTo" 
									name="ctl00$ContentPlaceHolder1$txtFinancialYearTo">
                                </span>
                            </td>
                        </tr>                        
                    </table>
&#13;
&#13;
&#13;

这是您提供的jsFiddle的更新分支: https://jsfiddle.net/jkdaza/thonfzwu/5/

答案 2 :(得分:0)

您可以使用link中的这个棘手的解决方案:

$('#txtFinancialYearFrom').change(function(el) {
    $(':input:eq(' + ($(':input').index(this) + 1) + ')').val('test');
});

https://jsfiddle.net/g34yqL0u/2/