【问题标题】:Why does the search button in my jsp code not work?为什么我的jsp代码中的搜索按钮不起作用?
【发布时间】:2014-10-06 04:07:44
【问题描述】:

以下是我的jsp的代码,其中有两个输入字段regNostudentName

我希望用户在 regNo 字段中只输入数字。它不应包含任何空格,并且数字的长度应仅为 12。

我添加了字符检查并添加了 CSS,但现在我的“搜索”按钮不起作用。

<head>
  <script src="http://code.jquery.com/jquery.min.js"></script>
  <style>
    #mycontainer, h1, h3 {
      text-align:center;
    }

    form {
      display:inline-block;
    }       

    #errorMsgNumber {
      display: none;
      background: brown; 
      color: white;
    }
  </style>

  <script>    
    var regNoField = document.getElementById('regNo');
    var regNoMessage = document.getElementById('regNoErrorMsgNumber');
    var inputFieldsButton = document.getElementById('inputFields');

    regNoField.addEventListener('keydown', onChange);

    function onChange(e) {
      if (e.keyCode < 48 || e.keyCode > 57) {
        regNoMessage.style.display = 'block' 
      };   

      if(/^\d+$/.test(regNoField.value)) {
        inputFieldsButton.disabled = false;   
      } else {
        inputFieldsButton.disabled = true;   
      }
    }

    $(document).ready(function(){
      $('#inputFields').click(function(event){
        if (document.getElementById('regNo').value !=""){                   
          $("#number").submit();                
        }else if(document.getElementById('studentName').value !=""){
          $("#name").submit();
        }
      });
    });    
  </script>
</head>

<body>          
  <div id="mycontainer">    
    <form method="post" action="number" id="number">
      <div id="regNoErrorMsgNumber">Only numbers are allowed</div>
      <div style="text-align: center;" >
        <!-- //TODO: Only number, no spaces, no special symbol and 12 digit check-->                
        <input  width="20" type="text" data-validation="numbers" id="regNo" name="regNo" size="30" maxLength="50" placeholder="Enter Register Number"> OR       
      </div>        
    </form>           

    <form method="post" action="name" id="name">                     
      <input  type="text" id="studentName" name="studentName" size="30" maxLength="50" placeholder="Enter Student Name"></input>            
    </form>                             
  </div>

  <div style="text-align: center;">
    <input id="inputFields" type="button" value="Search" />
  </div>                    
</body>

【问题讨论】:

  • 那么到底是什么不起作用?查看您的 javascript 代码,您的表单将被提交的唯一时间是,当单击 Search 时,分别是当 regNostudentName 不为空时。此外,这些是 javascript 代码,而不是 JSP;不同的东西。

标签: javascript css html web


【解决方案1】:

我对您的代码做了少许修改。这是javascript代码的顺序。我已将您的 java 脚本代码放在元素之后。现在它将起作用。

<head>
 <script src="http://code.jquery.com/jquery.min.js"></script>
     <style>
        #mycontainer, h1, h3 {
            text-align:center;
        }
        form {
            display:inline-block;
        }       
        #errorMsgNumber {
            display: none;
            background: brown; 
            color: white;
        }
    </style>


 </head>
<body>


<div id="mycontainer">  
    <form method="post" action="number" id="number">
        <div id="regNoErrorMsgNumber">Only numbers are allowed</div>
            <div style="text-align: center;" >
                    <!-- //TODO: Only number, no spaces, no special symbol and 12 digit check-->                
                    <input  width="20" type="text" data-validation="numbers" id="regNo" name="regNo" size="30" maxLength="50" placeholder="Enter Register Number"> OR       
            </div>      
    </form>           

    <form method="post" action="name" id="name"> 

                <input  type="text" id="studentName" name="studentName" size="30" maxLength="50" placeholder="Enter Student Name"></input>

    </form>                             
</div>             
            <div style="text-align: center;">
                <input id="inputFields" type="button" value="Search" />
             </div>

</body>

 <script>

    var regNoField = document.getElementById('regNo');
    var regNoMessage = document.getElementById('regNoErrorMsgNumber');
    var inputFieldsButton = document.getElementById('inputFields');

    regNoField.addEventListener('keydown', onChange);

    function onChange(e) {
        if (e.keyCode < 48 || e.keyCode > 57) {
            regNoMessage.style.display = 'block' 
        };   

        if(/^\d+$/.test(regNoField.value)) {
            inputFieldsButton.disabled = false;   
        } else {
            inputFieldsButton.disabled = true;   
        }
    }

    $(document).ready(function(){
        $('#inputFields').click(function(event){
            if (document.getElementById('regNo').value !=""){           

                $("#number").submit();

            }else if(document.getElementById('studentName').value !=""){
                $("#name").submit();
            }
        });
    });    
</script>  

您可以再做一件事,而不是从网站本身引用 jquery,您可以参考谷歌托管查看链接以获取好处http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/

【讨论】:

  • 非常感谢您的回答。我现在正在学习 Js 和 CSS。我是新手。 1)我应该怎么做才能在页面第一次加载时禁用搜索按钮? 2)如何指定“仅允许数字”消息的显示方向?例如,我希望消息显示在输入字段的下方或左侧。
  • 如果您正在使用 javascript、css 和 jQuery,那么请学习如何调试 javascript 功能 大多数浏览器都有开发人员工具,您可以在您的 javascript 代码中看到问题 如果您是学习如何调试使用 firefox 下载插件 firebug 和 firequery 和 google chrome 开发者工具就足够了。对于您的按钮禁用和启用问题,请查看链接stackoverflow.com/questions/22001305/…
  • 3) 另外,如果我粘贴一个数字 123,搜索按钮仍然处于禁用状态。只有在粘贴 123 后按键盘上的任意键时,才会启用“搜索”按钮。我怎样才能解决这个问题? 4)当我们输入的数字被删除时,搜索按钮仍然处于启用状态,而我想将搜索按钮更改为禁用。
  • api.jquery.com/change 事件。您可以将您的逻辑放入函数中以使其启用或禁用。
  • 你能回答这个问题吗stackoverflow.com/questions/26201424/…
猜你喜欢
  • 1970-01-01
  • 2023-02-05
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2014-01-23
  • 2013-08-06
相关资源
最近更新 更多