作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在验证一个文本框,如果验证失败,焦点应该位于同一个文本框上。我在互联网上搜索但没有找到任何合适的答案。
当我在 Firefox 中打开我的 asp 页面时,警报消息关闭后焦点会转到另一个控件,而在 chrome 中,警报消息无法关闭,每次我单击警报窗口的“确定”按钮或关闭按钮时,它都会重新出现。
<div class="form-group">
<label for="inputAge" class="col-md-2 control-label" id="lblAge">Age</label>
<div class="col-md-9">
<input type="text" id="inputAge" placeholder="35 or 25D or 5M" runat="server" required="required" maxlength="3" onblur="return ValidateAge()" />
</div>
</div>
<script type="text/javascript">
function ValidateAge() {
var str = document.getElementById("inputAge").value;
var number_regex = /^[1-9]\d*$/;
if (str.slice(-1) === 'm') {
var number_part = str.slice(0, -1);
if (!number_regex.test(number_part)) {
alert("invalid age1");
document.getElementById("inputAge").focus();
return false;
}
else if (number_part > 12) {
alert("invalid age2");
document.getElementById("inputAge").focus();
return false;
}
else {
return true;
}
}
}
</script>
如果验证失败,如何将焦点设置到同一个文本框?
最佳答案
此问题取决于 document.getElementById("inputAge").focus()
javascript 语句,该语句会触发另一个 blur
事件。因此,您需要实现一种状态
处理,帮助您避免由于这种副作用而执行ValidateAge()
。
也尝试一下这个实现:
var cancelBlurEvent = false;
function ValidateAge() {
if(cancelBlurEvent === true){
return cancelBlurEvent = false;
}
var str = document.getElementById("inputAge").value;
var number_regex = /^[1-9]\d*$/;
if (str.slice(-1) === 'm') {
var number_part = str.slice(0, -1);
if (!number_regex.test(number_part)) {
alert("invalid age1");
cancelBlurEvent = true //it is important to change cancelBlurEvent value before next statement
document.getElementById("inputAge").focus();
return cancelBlurEvent;
}
else if (number_part > 12) {
alert("invalid age2");
cancelBlurEvent = true
document.getElementById("inputAge").focus();
return cancelBlurEvent;
}
else {
return cancelBlurEvent = false;
}
}
}
关于javascript 专注于验证失败的文本框,在 Chrome 和 Firefox 中工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46128287/
我有一个 Collection View 并以这样一种方式排列它,即在屏幕的一侧有一个单独的列,并且根据焦点中的集合项替换内容。 如果对某个项目的关注超过 0.5 秒,我希望能够换出内容。 这是我目前
这是一种经常出现的情况,对我来说永远不会太容易。我想我会问其他人如何处理它。 想象一下,如果 demo=60 命令行参数的处理是这样完成的: if DemoOptionSpecified() {
我是一名优秀的程序员,十分优秀!