待解决问题
  1. 网页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条)
  1. 第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击键事件,效率较低,不推荐使用。

联系方式:

南京贝加达电子科技有限公司

  • 地址:南京市江北新区柳州北路21号涤太太科技大楼2F
  • 联系人:焦倩华(先生)
  • 手机:13813916308
  • 邮箱:Ser@bekda.com
  • 服务专线:400-8282-116
©2010-2024 Bekda Electronic Technology Co., Ltd. All right reserved.

苏公网安备 32011102010041号

320111201705278429

苏ICP备12027725号