在不提交的情况下验证表单
Validate a form without submitting
我有以下代码可以检查两个选择字段是否相同。当使用onsubmit调用时,代码工作正常。但是,在进行此验证后,仍会提交表单。如何防止脚本或表单提交不正确的数据。
请参阅下面的代码:
var fieldalias="Email address field"
function verify(element1, element2) {
var passed=false
if (element1.value=='') {
alert("Please fill out the "+fieldalias+"!")
element1.focus()
}
else if (element2.value=='') {
alert("Please verify the "+fieldalias+"!")
element2.focus()
}
else if (element1.value!=element2.value) {
alert("The two "+fieldalias+"s do not match")
element1.select()
}
else
passed=true
return passed
}
你没有包含你的HTML,所以我假设你已经将onsubmit()添加到你的表单元素中。
如果是这样,请确保您的呼叫如下所示:
onsubmit="return verify(element1, element2)"
(相应地替换元素 1 和元素 2)
如果此假设不正确,请提供一些其他详细信息,以便我们更好地提供帮助。
尝试对事件调用 stopImmediatePropagation(),以防止表单元素或更高级别元素中的任何其他处理程序进一步处理提交事件。
使用不同的事件调用该代码,例如:onchange或onfocusout。这样,每次用户在您的字段中输入一些值时都会执行验证,尤其是在提交之前。
编辑:
我不确定我是否正确理解了您,但我会以这种方式附加您的 JS 代码:
首先将选择框分配给变量:
var object_input = document.getElementById("selectId");
然后:
if(object_input.addEventListener)
{
object_input.addEventListener('blur', focus_lost);
object_input.addEventListener('keypress', checkForEnter);
}
else
{
object_input.attachEvent('onblur', focus_lost);
object_input.attachEvent('onkeypress', checkForEnter);
}
,然后执行验证 i focus_lost或检查输入。
假设在 html 代码中你有这样的东西:
<form action="test2.html" method="post" onsubmit="return verify(e1, e2);">
<input type="text" name="e1" /><br/>
<input type="text" name="e2" /><br/>
<input type="submit" value="Validate" />
</form>
您必须输入提交事件:
return verify(e1, e2);
因此,如果数据无效,您将不会转到提交页面a
编辑:
我认为问题是
element1.select()
在第三个 if 中,对于 select 对象不存在此选择方法。
您可以使用
element1.focus()
将起作用的代码是:
var fieldalias="Email address field"
function verify(element1, element2){
var passed=false;
if (element1.value==''){
alert("Please fill out the "+fieldalias+"!");
element1.focus();
}
else if (element2.value==''){
alert("Please verify the "+fieldalias+"!");
element2.focus();
}
else if (element1.value!=element2.value){
alert("The two "+fieldalias+"s do not match");
element1.focus();
}
else
passed=true;
return passed;
}
和
<form action="test2.html" method="post" onsubmit="return verify(document.getElementById('e1'), document.getElementById('e2'));">
<select id="e1">
<option value="One">One</option>
<option value="two">two</option>
<option value="Three">Three</option>
<option value="four">four</option>
</select><br/>
<select id="e2">
<option value="One">One</option>
<option value="two">two</option>
<option value="Three">Three</option>
<option value="four">four</option>
</select><br/>
<input type="submit" value="Validate" />
</form>
相关文章:
- JAVASCRIPT验证表单中的日期
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- 如何使用jQuery正确验证表单
- Javascript不会验证表单
- 如何使用javascript验证表单中的数据,然后调用php页面
- 包括来自另一个页面的Boostrap模态;t验证表单
- Javascript验证表单不重定向页面
- 在提交之前验证表单,jQuery发布到javaScript,然后提交到确认页面
- 引导复选框-x 选中时未正确更新 DOM - 如何验证表单
- Jquery 验证表单
- 验证表单中的 jQuery-UI 微调器
- 在 Jquery 中验证表单的输入字段
- 如何验证表单控制数据大小不超过2.5 mb
- 在表单进入Angular中的ng-submit之前验证表单
- Javascript表单验证:表单在错误返回时提交:
- 使用Angular.js验证表单输入的原始状态
- 正在复制验证表单
- 如何在转盘中逐步(3步)验证表单
- 使用javascript验证表单值
- 验证表单按id输入val