网页Form只有一个input框时,按回车后表单就直接提交了,输入检测函数不起作用?
完善时间:2013-03-13 15:34:22会员:贝加达目录:电脑网络 - 网站建设浏览:6187 次
下例中的 TestForm 表单中只有一个名称为 TestInput 输入框,当 TestInput 输入框处于聚焦状态时,按回车表单直接就提交了,而没有通过输入检测函数 CheckInput() 进行合法性检查,当表单中有多个输入框时没有此问题,请问这种问题有没有什么办法解决?
<form name="TestForm" method="post" action="test.asp?act=test"> 请输入6位数字:<input name="TestInput" type="text" tabindex="1" maxlength="6"> <a href="javascript:void(0);" onclick="javascript:CheckInput();return false;">测试</a> </form> <script type="text/javascript"> //输入检测函数 function CheckInput(){ if(!(/^(\d{6})$/).test(document.TestForm.TestInput.value)){ alert("请检查输入是否有误!"); document.TestForm.TestInput.focus(); return false; } document.TestForm.submit(); return true; } </script>
第1条回答
完善时间:2013-03-13 15:51:46会员:倩华
你可以尝试以下方法来解决:
1、在 Form 中加入提交检测
<form name="TestForm" method="post" action="test.asp?act=test" onsubmit="javascript:CheckInput();return false;"> 请输入6位数字:<input name="TestInput" type="text" tabindex="1" maxlength="6"> <a href="javascript:void(0);" onclick="javascript:CheckInput();return false;">测试</a> </form>
2、加一个不显示的输入框
<form name="TestForm" method="post" action="test.asp?act=test"> 请输入6位数字:<input name="TestInput" type="text" tabindex="1" maxlength="6"> <input type="text" name="FixEnter" style="display:none;"> <a href="javascript:void(0);" onclick="javascript:CheckInput();return false;">测试</a> </form>
3、在输入框加入回车检测:
<form name="TestForm" method="post" action="test.asp?act=test"> 请输入6位数字:<input name="TestInput" type="text" tabindex="1" maxlength="6" onkeydown="javascript:if(event.keyCode==13){CheckInput();return false;}"> <a href="javascript:void(0);" onclick="javascript:CheckInput();return false;">测试</a> </form>
个人觉得优先使用第1种、第2种方法,第3种方法跟踪并判断onkeydown击键事件,效率较低,不推荐使用。
发布日期:2020/01/15
发布日期:2019/07/22
发布日期:2019/03/17
苏公网安备 32011102010041号
320111201705278429
苏ICP备12027725号