本文详解JS表单提交验证机制,重点说明onsubmit事件触发条件及return返回值的作用。针对HTML5 input type=number生成的上下调节三角,提供CSS清除方案。同时展示通过随机数刷新验证码的完整代码示例,涵盖表单结构、样式及交互逻辑。
JS表单提交验证与input type=number处理
在提交表单时,需对输入框和文本域等元素的值进行合理性校验。可通过编写form的onSubmit事件实现,以下是具体代码及注意事项:
首先,仅当通过form内部的<button type="submit" >按钮提交时,才会触发form的onSubmit事件。若通过button的onclick事件提交,则不会触发该事件。
其次,onSubmit事件的正确写法为:<form action="" method="post" onsubmit="return checkFrom();">。务必在函数调用前加上return关键字,否则校验结果无效。
function checkFrom(){
var username=$('#username').val();
alert(username);
var pwd=$('#pwd').val();
if(username==null || username==""){
$('#codeInfo').html("请输入用户名");
$('#username').focus();
return false;
}else if(pwd==null || pwd==""){
$('#codeInfo').html("请输入密码");
$('#pwd').focus();
return false;
}else{
return true;
}
}
3、HTML5,input 提供很多新型的type,省去了我们写JavaScript正则表达式来限定输入值的类型的时间,比如,number,email,tel等等,表示需要输入合法的数字,邮箱,电话号码等。但是我发现将type设置为number之后,让它只接受数字的输入,会出现两个三角形,用于调整数字的大小(加1减1),
显然,某些场景下无需显示这些按钮,以免影响美观。可使用以下方法将其隐藏。

<style type="text/css">
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button{
-webkit-appearance: none !important;
margin: 0;
}
input[type="number"]{-moz-appearance:textfield;}
</style>
验证码刷新实现
第四,验证码是常见的小部件。点击刷新时,需传递参数以避免获取相同的验证码,通常使用时间戳或随机数,此处采用随机数方案。
<div class="form-group input-group">
<span class="input-group-addon" style="padding: 0px;">
<img alt="验证码" src="<%=basePath %>code/verifyCode" title="看不清可点击刷新验证码" style="cursor:pointer;"
onclick="this.src='<%=basePath %>code/verifyCode?d='+Math.random();"></span>
<input type="number" class="form-control" id="code"
placeholder="输入验证码" onblur="validateCode(this.value)"/>
</div>
第五,以下提供综合示例代码。
<style type="text/css">
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button{
-webkit-appearance: none !important;
margin: 0;
}
input[type="number"]{-moz-appearance:textfield;}
</style>
<script type="text/javascript">
function checkFrom(){
var username=$('#username').val();
alert(username);
var pwd=$('#pwd').val();
if(username==null || username==""){
$('#codeInfo').html("请输入用户名");
$('#username').focus();
return false;
}else if(pwd==null || pwd==""){
$('#codeInfo').html("请输入密码");
$('#pwd').focus();
return false;
}else{
return true;
}
}
</script>
综合代码示例
表单部分代码如下:
<form role="form" action="" method="post" onsubmit="return checkFrom();">
<hr />
<h5>Enter Details to Login</h5>
<br />
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-tag"></i></span>
<input type="text" class="form-control" placeholder="Your Username " name="username" id="username" />
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input type="password" class="form-control" placeholder="Your Password" name="pwd" id="pwd" />
</div>
<div class="form-group input-group">
<span class="input-group-addon" style="padding: 0px;">
<img alt="验证码" src="获取验证码的URL" title="看不清可点击刷新验证码" style="cursor:pointer;"
onclick="this.src='获取验证码的URL?d='+Math.random();"></span>
<input type="number" class="form-control" id="code" placeholder="输入验证码" onblur="validateCode(this.value)" />
</div>
<div class="form-group input-group">
<span id="codeInfo" style="color: #f55"></span>
</div>
<div class="form-group">
<label class="checkbox-inline"> <input type="checkbox" />
Remember me
</label>
<span class="pull-right">
<a href="index.html" rel="external nofollow" >Forget password ? </a>
</span>
</div>
<button type="submit" class="btn btn-primary ">Login Now</button>
</form>
以上介绍了JS表单提交验证、input(type=number)去三角及刷新验证码的实现方法,希望对大家有所帮助。如有疑问请留言,小编会及时回复。感谢支持!