javascript:表单长度验证
javascript: form length validation
我想,我的javascript出现了验证问题。当表单无效时,它仍然提交。具体来说,当用户输入的长度超过10个字符时,它仍然会将表单提交到数据库中,同时它应该显示警报。这是脚本:
<script type="text/javascript">
function validateForm()
{
var numericExpression = /^[0-9]+$/;
var a=document.forms["purchaseform"]["no"].value;
var b=document.forms["purchaseform"]["qty"].value;
if (a==null || a=="")
{
alert("Form number must be filled out");
return false;
}
if(a.match(numericExpression))
{
return true;
}
else
{
alert("Form number must be filled with numbers only");
return false;
}
if(a.length > 10) //i got a problem with this one i think
{
alert("Form number must not be greater than 10 character length");
return false;
}
if (b==null || b=="")
{
alert("Quantity must be filled out");
return false;
}
if(b.match(numericExpression))
{
return true;
}
else
{
alert("Quantity must be filled with numbers only");
return false;
}
}
</script>
下面是表单片段:
<form name="purchaseform" method="post" onsubmit="return validateForm()" action="submitpurchaseadmin.php">
<table>
<tr>
<td>Form number</td>
<td><input type="text" name="no"></td>
</tr>
<tr>
<td>Category</td>
<td>
<select id="cat" name="cat">
</select>
</td>
</tr>
<tr>
<td>Item</td>
<td>
<select id="item" name="item">
</select>
</td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="text" name="qty"></td>
</tr>
<tr>
<td>Date</td>
<td><input type="text" name="date" value="<?php echo date("d-m-Y"); ?>"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Save"></td>
</tr>
</table>
</form>
将ID添加到这些输入并执行
function validateForm() {
var a = document.getElementById("no").value;
var b = document.getElementById("qty").value;
if (!a.length) {
alert("Form number must be filled out");
return false;
}else if (!a.match(/^[0-9]+$/)) {
alert("Form number must be filled with numbers only");
return false;
}else if (a.length > 10) {
alert("Form number must not be greater than 10 character length");
return false;
}else if (!b.length) {
alert("Quantity must be filled out");
return false;
}else if (!b.match(/^[0-9]+$/)) {
alert("Quantity must be filled with numbers only");
return false;
}
}
FIDDLE
也许问题就在这里:if(a.match(numericExpression))
,当用户输入的长度超过10个字符时,这个if语句也会返回true。
onsubmit
不会自动阻止表单提交,您需要在onsubmit函数中使用preventDefault
。
请参阅此处:
onsubmit方法没有';t停止提交
值得注意的是,虽然Adeneo的修复解决了空白名称和数量问题,但它似乎并没有提醒注意a
的长度。
相关文章:
- 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