2016-11-18 25 views
2

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

<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> 

我刚刚在JavaScript中使用.jspx。我希望有一个人可以帮助我。谢谢。

+0

看起来你的脚本在你添加页面上的元素之前运行。这就像在进入房间之前呼叫一个人的名字一样。元素将不会被找到。要么脚本需要在元素之后,你需要使用文档准备好,或者窗口onload。 – epascarello

+0

@epascarello我试过这个先生http://pastie.org/private/kulrs3syaswssygh6xuycq,它仍然不起作用。 –

+0

well是输入的id真的是'id =“_ floorNumber_id”'?我在代码 – epascarello

回答

1

那么它看起来像你的脚本运行之前,你添加页面上的元素。这就像在进入房间之前呼叫一个人的名字一样。元素将不会被找到。脚本需要在元素之后,您需要使用文档准备,窗口载入或事件委托。

后:

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

文件准备

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

的onload

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

或事件代表团

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