原谅任何错误的编码。
我正在尝试编写一个表单,其中当用户单击“ Enter”并且他们位于其中一个文本框中时,他们将继续下一个文本框,而不是提交表单。我有一部分代码可用于此操作,但当其中一个文本框被禁用(属性'disabled'='disabled')时,它将只是停止并且不会继续执行该操作。
我希望它跳过禁用的文本框,然后转到下一个文本框。
这是我的工作代码(击中并粘在禁用的文本框中)。我很尴尬地发表我为使这项工作所做的尝试:-|
$('input').keydown(function (e) {
var ae = document.activeElement;
if (
ae.type != "button" &&
ae.type != "submit" &&
ae.type != "password"
)
{
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if (key == 13) {
e.preventDefault();
var inputs = $('form').find('input:visible');
inputs.eq(inputs.index(this) + 1).focus();
}
}
});
答案 0 :(得分:2)
您在这里。不需要jQuery。我希望代码能说明一切,但是如果需要,我很乐意详细解释它。
除了OP的请求(由Patrick Roberts提出的建议之外,还可以使用AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.);
跳至上一个输入:
Shift+Enter
const inputs = Array.from(document.querySelectorAll('input'));
const enabledInputs = Array.from(document.querySelectorAll('input:enabled'));
inputs.forEach(elt => {
elt.addEventListener('keydown', evt => {
if (evt.key=='Enter') {
let currentInputIndex = enabledInputs.indexOf(elt);
let nextInputIndex;
if (evt.shiftKey) {
nextInputIndex = (currentInputIndex-1)%enabledInputs.length;
} else {
nextInputIndex = (currentInputIndex+1)%enabledInputs.length;
}
enabledInputs[nextInputIndex].focus();
}
})
})
input {
display: block;
}
答案 1 :(得分:2)
赞美@Nino Filiu的jquery解决方案
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if (key == 13) {
e.preventDefault();
var inputs = $('form').find('input:enabled'); //inputs are disabled not hidden
inputs.eq(inputs.index(this) + 1).focus();
}
更改位于input:enabled
中,而不是input:visible
中。后者将找到任何未隐藏的输入,前者将找到任何未禁用的输入