【发布时间】:2019-11-09 04:07:12
【问题描述】:
我有以下 HTML 输入类型 Number
HTML:
<input type=“number” class=“reqField” id=“number1” placeholder=“Enter Number only/>
<input type=“number” class=“reqField” id=“number2” placeholder=“Enter Number only/>
JS:
function focusInNumber (id) {
var thisID = id;
var nextID = id + 1;
var preID = id - 1;
clearTimeout(numberReturn);
$(“#number” + thisID).prop(“disabled”, false);
placeCursor($(“#number” + thisID));
}
function focusOutNumber (id) {
var thisID = id;
var nextID = id + 1;
var preID = id - 1;
var value = $(“#number” + thisID).val();
var regex = new RegExp(/^\d*$/);
var regex1 = new RegExp(/^.*[\+\-\.].*/);
var l = $(“#number” + thisID).val().length;
if(value.match(regex3)) {
alert(“Just enter numerical digits”);
numberReturn = setTimeout(function() {
placeCursor($(“#number” + thisID));
},5000);
} else {
if (l<=0) {
alert(“This field cannot be empty”);
placeCursor($(“#number” + thisID));
},5000);
} else {
if(value.match(regex)) {
placeCursor($(“#number” + nextID));
}
}
}
function placeCursor(id) {
id.focus();
//id.val(id.val());
var tmp= id.val();
id.val(“”);
id.va(tmp);
//id.focus().val(“”).blur().focus().val(tmp);
}
$(document).ready(function(){
....
$(“#number1”).focusin(function(){
focusInNumber(1);
});
$(“#number1”).focusout(function(){
focusOutNumber(1);
});
...
});
所以问题是每次按下标签时,下一个文本框都会聚焦但光标不在其中。 我必须点击它才能输入。 我不明白为什么它在 chrome 和 IE 上会这样。
由于只有文本/搜索、url、电话和密码类型才允许使用 chrome 选择,而数字类型则不允许,selectionStart 和 selectionEnd 是不可选择的。
我也无法将文本框的类型从数字更改为文本。
placeCursorfunction 上的每个注释代码都是尝试过的选项,但无法解决问题。
当标签从文本框Number1 按下到Number2 时,请帮助将光标放在文本框上,一旦它只有数字。
更新
得到
未捕获的 RangeError:超出最大调用堆栈大小
在每个 .focus() 上。这是使光标不在焦点输入文本框上的问题。 Try-Catch 会忽略错误,但不会将光标放在输入文本框上。有人可以帮忙修复它吗?
【问题讨论】:
-
@Synapsis :不,我不认为这是重复的,因为 .focus() 是“不”,将光标放在文本框中是我的问题。不,也没有大写混淆。
-
TAB 按钮在 google 和 IE 上都适用于我,它还允许我写作。如果它对您不起作用,只需添加焦点功能,这样当您在第一个输入字段中插入一个值时,它会自动聚焦第二个而不按 TAB 如果您想检查您的代码是否有效,请将其添加到此在线编辑器:w3schools.com/html/tryit.asp?filename=tryhtml_default
-
@Synapsis 选项卡适用于 w3school 试用版!但是该选项卡无法处理实际代码,因为它是一个大型 js,对表单进行了更多验证。
-
你能告诉我你调用函数的代码部分吗?
标签: javascript jquery html google-chrome internet-explorer-9