2013-05-02 26 views
0

這是我迄今爲止的,但問題是如果我輸入數字16,它不會允許我改變文本框中的內容了。尋找如何解決這個問題的幫助,謝謝你們。試圖防止用戶輸入一個非數字或超過一定範圍的數字

<SCRIPT language=Javascript> 
    <!-- 
    function isNumberKey(evt) 
    { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
     var num = document.getElementById('quantity').value 
     var y = parseInt(num , 10 ) 
     if (y > 15) 
     return false; 

     return true; 
    } 
</SCRIPT> 


<form action="RegServlet" method="post"> 
    <p> 
     Enter quantity you would like to purchase : <input name="quantity" onkeypress="return isNumberKey(event)" id ="quantity" size=15 type="text" value="1"/> 
    </p> 
</form> 
+1

你丟失的getElementById行之後分號,之後線太 – 2013-05-02 22:38:08

+0

' '? – Bergi 2013-05-02 22:43:31

+0

@FranciscoAfonso http://mislav.uniqpath.com/2010/05/semicolons/ – Ian 2013-05-02 22:43:49

回答

0

這是一個可能的解決方案,我都贊成與addEventListener

分配給它的去除你的內聯事件處理程序我也從使用keypresseventkeyup

我剝改變,與regex,任何非數字字符不管,不是兩者來檢查被按下。

我們parseIntvalue的輸入元素,如果這個數字大於指定,我們slice關閉輸入的最後一個字符。

HTML

<p>Enter quantity you would like to purchase : 
    <input name="quantity" id="quantity" size=15 type="text" value="1" /> 
</p> 

的Javascript

var quantity = document.getElementById("quantity"); 

function verify(evt) { 
    var target = evt.target; 

    target.value = target.value.replace(/[^\d]/, ""); 
    if (parseInt(target.value, 10) > 15) { 
     target.value = target.value.slice(0, target.value.length - 1); 
    } 
} 

quantity.addEventListener("keyup", verify, false); 

jsfiddle

window.onload事件起來結束語整個事情。

註釋在原稿載置過程結束

負載事件觸發。在 這一點上,文檔中的所有對象都在DOM中,並且所有圖像和子幀都已完成加載。

window.addEventListener("load", function() { 
    document.getElementById("quantity").addEventListener("keyup", function (evt) { 
     var target = evt.target; 

     target.value = target.value.replace(/[^\d]/, ""); 
     if (parseInt(target.value, 10) > 15) { 
      target.value = target.value.slice(0, target.value.length - 1); 
     } 
    }, false); 
}); 

jsfiddle

+0

它在jsfiddle上工作,但不在我的網頁上。這裏是完整的網頁。任何想法?真的很感謝這種方式。它緊張的時間在這個任務上http://chopapp.com/#16nu6lzt – user2323975 2013-05-02 23:39:26

+0

你可能需要把你的javascript包裝在一個window.onload事件中https://developer.mozilla.org/en-US/docs/DOM/window.onload – Xotic750 2013-05-02 23:41:31

+0

這很有效,非常感謝!現在喝另一杯咖啡,我可以保持清醒直到早上6點才完成這個工作 – user2323975 2013-05-02 23:48:15

相關問題