2016-11-18 1 views
2

フロア番号の入力ボックスがあり、その内部の最初の文字を無効にしたいとします。だから私はこのjavascriptを使用します:.jspxの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を使っています。私は誰かが私を助けることができるといいですありがとうございました。

+0

ページに要素を追加する前にスクリプトが実行されているようです。彼らが部屋に入る前に人の名前を呼ぶようなものです。要素が見つかりません。スクリプトは要素の後ろにある必要があります。ドキュメントの準備やウィンドウのロードを使用する必要があります。 – epascarello

+0

@epascarello私はこのSir http://pastie.org/private/kulrs3syaswssygh6xuycqを試しましたが、それでも動作しません。 –

+0

も入力の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); 
}); 
関連する問題