在jquery中获取下一个(不是立即)元素

时间:2017-12-16 17:11:19

标签: jquery html

我的HTML代码结构如下:

<!-- First Step -->
<fieldset>
    <div>
        <input type="text" name="username" />
    </div>
    <input type="button" name="next" value="Next" />
</fieldset>
<!-- Second Step -->
<fieldset>
    <div>
        <input type="password" name="password" />
    </div>
    <input type="button" name="next" value="Next" />
</fieldset>

我想这样做,如果一个用户按下回车键并选择了该字段,它会自动按下Next输入,然后我创建这个jQuery代码:

$('input[name="username"], input[name="password"]').keypress(function (e) {
    var key = e.which;
    if (key == 13) {
        $('input[name="next"]').click();
        return false;  
    }
});

它可以工作,但前提是用户在第一步中输入(在本例中为用户名)。当用户尝试在第二步(在这种情况下是密码)中按Enter键时,没有任何反应,因为代码单击页面下一个第一个输入,在这种情况下是第一步。

有一种jQuery的方式,所以用户可以点击相应的下一个按钮?我找到了下一个函数,但它只有在它是下一个兄弟元素时才有效。

2 个答案:

答案 0 :(得分:2)

thre是name=next的两个按钮,这是有问题的,因为点击输入密码就选择第一个按钮$( this ).parent().next('input[name="next"]').click();

解决问题的方法是使用jquery libarary中的next()函数。

<fieldset>
    <div>
        <input type="text" name="username" />
    </div>
    <input type="button" name="usernamenext" value="Next" />
</fieldset>
<!-- Second Step -->
<fieldset>
    <div>
        <input type="password" name="password" />
    </div>
    <input type="button" name="passwordnext" value="Next" />
</fieldset>

另一个解决方案是使用name vlaue的唯一值,因为它有两个同名的元素。试试下面的事情。

$('input[name="username"], input[name="password"]').keypress(function (e) {
    var key = e.which;
    if (key == 13) {
         $('input[name= "'+ $(this).attr('name') +'next"]').click();
        return false;  
    }
});

你和jquery就像

Dim x As Decimal = 14.004999D

Dim y as Decimal = Decimal.Round(x + 0.005D, 2, System.MidpointRounding.AwayFromZero)

利用unique将结束所有问题,

答案 1 :(得分:0)

使用遍历来定位特定实例并避免单击所有实例

$(this).parent().next().click();