我有一个楼层号输入框,我想禁用其中的第一个字符。所以我用这个javascript:

   <script type="text/javascript">
 //<![CDATA[
$("#_floorNumber_id).on("keydown", function(e) {
    if (($(this).get(0).selectionStart == 0 && (e.keyCode < 35 || e.keyCode > 40))
        || ($(this).get(0).selectionStart == 1 && e.keyCode == 8)) {
        return false;
    }
});

$("#_floorNumber_id").bind("contextmenu", function(e) {
    e.preventDefault();
});
    //]]>

    </script>


但是似乎脚本没有被读取。我尝试对它添加警报,但警报均未显示。这就是我的.jspx的样子:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>

   <script type="text/javascript">
 //<![CDATA[
$("#_floorNumber_id").on("keydown", function(e) {
    if (($(this).get(0).selectionStart == 0 &amp;&amp; (e.keyCode < 35 || e.keyCode > 40))
        || ($(this).get(0).selectionStart == 1 &amp;&amp; e.keyCode == 8)) {
        return false;
    }
});

$("#_floorNumber_id").bind("contextmenu", function(e) {
    e.preventDefault();
});
    //]]>

    </script>

    <div id="wrapper">
        <div class="container-fluid">
            <div>
                <ol class="breadcrumb">
                  <li class="disabled"><a>Floor</a></li>
                  <li><a href="/hms/floors?page=1&amp;size=${empty param.size ? 10 : param.size}">List of Floors</a></li>
                  <li class="active"><span>Register Floor</span></li>
                 </ol>
            </div>

                  <form:create id="fc_hms_domain_Floor" modelAttribute="floor" path="/floors" render="${empty dependencies}" >
                      <field:inputFloor field="floorNumber" id="c_hms_domain_Floor_floorNumber" max="30" min="3" required="true" value="${floor.floorNumber}"/>
                      <field:textarea field="description" id="c_hms_domain_Floor_description" required="true" />
                      <field:textarea field="floorComments" id="c_hms_domain_Floor_floorComments" required="true" />
                  </form:create>
                  <form:dependency dependencies="${dependencies}" id="d_hms_domain_Floor" render="${not empty dependencies}" />

           </div>
       </div>
</div>


我只是在.jspx中使用javascript的新手。我希望有一个人可以帮助我。谢谢。

最佳答案

好吧,在页面上添加元素之前,脚本似乎已运行。这就像在进入房间之前先呼叫一个人的名字。找不到元素。脚本需要放在元素之后,您需要使用文档准备就绪,窗口加载或事件委托。

后:

<input>
<script>
   //your code here
</script>


准备好文件

$( function(){
   //your code here
});


负载

$(window).on("load" , function() {
   //your code here
});


或事件委派

$(document).on("click", "#_floorNumber_id", "keydown", function(e){
  console.log(e.which);
});

10-06 03:21