我的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的方式,所以用户可以点击相应的下一个按钮?我找到了下一个函数,但它只有在它是下一个兄弟元素时才有效。
答案 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();