首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jquery中使用class来获取下一个输入元素id?

如何在jquery中使用class来获取下一个输入元素id?
EN

Stack Overflow用户
提问于 2012-03-12 15:56:41
回答 2查看 5.2K关注 0票数 0

我必须使用jquery在第一个textbox的更改事件中获取下一个textbox id。我怎么才能得到它。为此,我使用了next(),但它并不像我想要的那样工作。

这是我的代码,

代码语言:javascript
复制
<table>
    <tbody>
        <tr>
            <td>
                <p>PF Value</p><br>
            </td>
            <td>
                <span id="ctl00_ctl00_bcr_bcr_TextBox1" class="txtfill" style="display: inline-block;">
                    <input name="ctl00$ctl00$bcr$bcr$TextBox1$textbox1" class="txtSec80CCD" value="0" id="ctl00_ctl00_bcr_bcr_TextBox1_textbox1" onblur="calcDedSecCCD(this)"  style="width: 70px;" type="text">
                    <span id="ctl00_ctl00_bcr_bcr_TextBox1_valCustom" style="color: Red; display: none;">*</span>
                    <div id="ctl00_ctl00_bcr_bcr_TextBox1_ErrorDiv" class="ValidatorErrorDiv" style="display:none">
                        <span id="ctl00_ctl00_bcr_bcr_TextBox1_Label1">You must enter a <br>number</span>
                    </div>
                </span>
            </td>
            <td>
                <span id="ctl00_ctl00_bcr_bcr_TextBox2" class="txtfill" style="display: inline-block;">
                    <input name="ctl00$ctl00$bcr$bcr$TextBox2$textbox1" class="txtSec80CCD" value="0" id="ctl00_ctl00_bcr_bcr_TextBox2_textbox1" style="width: 70px;" type="text">
                    <span id="ctl00_ctl00_bcr_bcr_TextBox2_valCustom" style="color: Red; display: none;">*</span>
                    <div id="ctl00_ctl00_bcr_bcr_TextBox2_ErrorDiv" class="ValidatorErrorDiv" style="display:none">
                        <span id="ctl00_ctl00_bcr_bcr_TextBox2_Label1">You must enter a <br>number</span>
                    </div>
                </span>
            </td>
        </tr>
        <tr>
            <td>
                <p>Life Insurance Premium</p><br>
            </td>
            <td>
                <span id="ctl00_ctl00_bcr_bcr_TextBox3" class="txtfill" style="display: inline-block;">
                    <input name="ctl00$ctl00$bcr$bcr$TextBox3$textbox1" class="txtSec80CCD" value="0" id="ctl00_ctl00_bcr_bcr_TextBox3_textbox1" onblur="calcDedSecCCD(this)"  style="width: 70px;" type="text">
                    <span id="ctl00_ctl00_bcr_bcr_TextBox3_valCustom" style="color: Red; display: none;">*</span>
                    <div id="ctl00_ctl00_bcr_bcr_TextBox3_ErrorDiv" class="ValidatorErrorDiv" style="display:none">
                        <span id="ctl00_ctl00_bcr_bcr_TextBox3_Label1">You must enter a <br>number</span>
                    </div>
                </span>
            </td>
            <td>
                <span id="ctl00_ctl00_bcr_bcr_TextBox4" class="txtfill" style="display: inline-block;">
                    <input name="ctl00$ctl00$bcr$bcr$TextBox4$textbox1" class="txtSec80CCD" value="0" id="ctl00_ctl00_bcr_bcr_TextBox4_textbox1" style="width: 70px;" type="text">
                    <span id="ctl00_ctl00_bcr_bcr_TextBox4_valCustom" style="color: Red; display: none;">*</span>
                    <div id="ctl00_ctl00_bcr_bcr_TextBox4_ErrorDiv" class="ValidatorErrorDiv" style="display:none">
                        <span id="ctl00_ctl00_bcr_bcr_TextBox4_Label1">You must enter a <br>number</span>
                    </div>
                </span>
            </td>
        </tr>

   ......
   ......
   ......

    </tbody>
</table>  

我的脚本是这样写的,

代码语言:javascript
复制
function calcDedSecCCD(id) {

        var eid = $(id).attr('id');
        //var elementVal = $('#' + eid).val();    
        //var nxtEid = $(eid).next(':input .txtSec80CCD').attr('id');            

        var nextele = $(this + ':input .txtSec80CCD').next();
        //alert(nextele);
        var nextId = $(nextele).attr('id');


        alert("First Element: "+eid);
        alert("First Element: " + nextId);

    }

我想在textbox1的更改事件上使用textbox id : ctl00$ctl00$bcr$bcr$TextBox2$textbox1。如何使用class获取文本输入的id。或者在第一个文本框改变时获取下一个文本框的id的任何其他方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-12 18:08:52

你写的标记太难读了。随着时间的推移,你会开始欣赏短ID,名字等,因为不需要在每个选择器中使用40个字符,这只会使编写javascript和css变得困难,甚至更难在以后阅读和理解代码。

您还成功地创建了一个复杂的嵌套元素系统,这些元素几乎肯定是不必要的,并且很难用javascript遍历,保持它更简单通常是一个好主意。

首先,您可能不应该将"id“作为变量传递给您的函数,因为"id”实际上在javascript中执行某些操作(它获取元素id,参见下面的脚本)。

如果只在每个"td“中查找下一个input元素,下面的方法将会起作用,但不会在"td”中的最后一个输入中找到下一个"tr“中的下一个输入,等等。

代码语言:javascript
复制
function calcDedSecCCD(elm) {
    var eid = elm.id;
    var nextId = $(elm).parents('td').next().find('input')[0].id;

    alert("First Element: "+eid);
    alert("Next Element: "+nextId);
}

这是一个FIDDLE

票数 1
EN

Stack Overflow用户

发布于 2012-03-12 17:41:28

您可以使用jquery索引函数

代码语言:javascript
复制
var $spans = $("td>span.txtfill");

// Your next function
function get_next_span(elem){

  var $span = $(elem).closest('td>span.txtfill'),
      index = $spans.index($span);

  return $spans.eq(index+1);
}

因此,如果你有一个文本字段,你可以像这样使用helper函数:

代码语言:javascript
复制
var $current = $("#ctl00_ctl00_bcr_bcr_TextBox2_textbox1"),
    $next = get_next_span($current).find('input[type=text]');   

或在更改事件中:

代码语言:javascript
复制
$("input[type=text]").change(function(){
   get_next_span(this).find('input[type=text]').show();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9663433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档