以下代码正在执行此操作:当用户按[Enter]键时,它将跳转/切换到下一个文本框。
$(function () {
$('input:text:first').focus();
var $inp = $('input:text');
$inp.bind('keydown', function (e) {
//var key = (e.keyCode ? e.keyCode : e.charCode);
var key = e.which;
if (key == 13) {
e.preventDefault();
var nxtIdx = $inp.index(this) + 1;
var nextTextBox = $(":input:text:eq(" + nxtIdx + ")");
nextTextBox.focus();
}
});
});
上面的代码工作正常。
但是,我接下来要做的是自动突出显示文本框中的所有文本。这就是我要做的:
$(function () {
$('input:text:first').focus();
var $inp = $('input:text');
$inp.bind('keydown', function (e) {
//var key = (e.keyCode ? e.keyCode : e.charCode);
var key = e.which;
if (key == 13) {
e.preventDefault();
var nxtIdx = $inp.index(this) + 1;
var nextTextBox = $(":input:text:eq(" + nxtIdx + ")");
nextTextBox.focus();
nextTextBox.setSelectionRange(0, nextTextBox.value.length);
}
});
});
但是,它不起作用。您是否知道如何在焦点跳转到下一个文本框后修补用于自动突出显示所有文本的代码?
答案 0 :(得分:2)
for x, y in sorted_values:
print(x, y)
此选择器返回一个数组,因此您可以使用[0]索引或使用val()获取将返回与选择器匹配的第一个元素的值。
您可以使用
$(":input:text:eq(" + nxtIdx + ")")
或$(":input:text:eq(" + nxtIdx + ")")[0]
$(":input:text:eq(" + nxtIdx + ")").val()
$(function() {
$('input:text:first').focus();
var $inp = $('input:text');
$inp.bind('keydown', function(e) {
var key = e.which;
if (key == 13) {
e.preventDefault();
var nxtIdx = $inp.index(this) + 1;
if ($(":input:text:eq(" + nxtIdx + ")").length > 0) {
$(":input:text:eq(" + nxtIdx + ")").focus();
$(":input:text:eq(" + nxtIdx + ")")[0].setSelectionRange(0, $(":input:text:eq(" + nxtIdx + ")")[0].value.length)
}
}
});
});