Javascript输入验证在第一次尝试时无法工作
javascript input validation is not working on the first try
下面是HTML输入表单的脚本。我的问题是,当我第一次在输入框中输入一些东西时,我得到了错误的结果,但是当我再次关注输入框(单击输入框),然后取消选择输入框时,我得到了正确的答案!为什么会这样?解决方案是什么?
<input type="email" id="iemail" name="email" class="form-control"></input>
<script>
var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,4}$/i;
var userinput;
$("#iemail").focus(function(){
userinput = $("#iemail").val();
});
$("#iemail").blur(function(){
if(pattern.test(userinput)){
alert("VALID");
}else{
alert("not a valid e-mail address");
}
});
</script>
有谁能帮帮我吗?
这是因为您在该字段的focus
事件上为userInput
分配值,这是focus
第一次被触发,当该字段为空白时,将意味着userInput
被设置为空白值。
您可以将userInput
的分配移到blur
事件中。
var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,4}$/i;
$("#iemail").blur(function(){
var userinput = $("#iemail").val();
if(pattern.test(userinput)){
alert("VALID");
}else{
alert("not a valid e-mail address");
}
});
Remove this:
$("#iemail").focus(function(){
userinput = $("#iemail").val();
});
将模糊设置为:
$("#iemail").blur(function(){
userinput = $("#iemail").val();
if(pattern.test(userinput)){
alert("VALID");
}else{
alert("not a valid e-mail address");
}
});
原因是您将#iemail
的值全局地存储在焦点上。在第一次聚焦时,它全局存储一个空字符串,因为您还没有键入任何内容。当你模糊时,它会检查空的全局字符串。第二次聚焦时,它在文本框中有一个值并存储它。
不需要单独做这些事情。
$("#iemail").blur(function(){
var userinput = $("#iemail").val();
if(pattern.test(userinput)){
alert("VALID");
}else{
alert("not a valid e-mail address");
}
});
相关文章:
- 密码输入键脚本在首次使用后无法工作
- 将数据输入到draggable无法工作
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 角度过滤器可以工作,但将输入视为未定义并抛出错误
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- 我如何使HTML5<输入类型=月份>以在所有浏览器上工作
- 提交按钮只能在onchange调用输入文本后第二次点击时工作
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 如何使输入类型=“;电话“;按类型工作=“;密码”;
- 提前输入以在 Angular 模板中工作
- 鼠标输入鼠标离开没有按照我认为应该的方式工作
- 比较两个输入值的 AngularJS 无法按预期工作
- 为什么除了html5输入模式属性之外,这个简单的regex在任何地方都能工作
- Javascript/Php聊天-输入is'不能在一个文本框中工作
- 输入字段验证的键代码函数在chrome中没有按预期工作
- 如何让JavaScript控制台用户输入工作(node.js)
- Angularjs的ng-model不工作输入[text])
- ie浏览器bug!仅当搜索按钮按下时工作(输入不工作)
- getElementById()不工作输入类型时间