2016-02-26 29 views
0
<input type="text" name="RangeText" id="rangeNum" onkeypress = "printValidation(event)" /> 

我想只允許在上面的打印選擇文本框中的特定頁面範圍內的按鍵事件的鍵字符。我可以用正則表達式輕鬆做到這一點,但希望用戶只鍵入有效的sccenarios!如何僅允許特定打印範圍內的按鍵事件的字符?

我想才達到是如下面的例子:

1允許

1-2允許

-2不允許

1,2-3,圖4, 5-7允許

1 2 3不允許

1-2-2不允許

這就是我目前的功能,棘手的部分似乎不允許負數開始,但允許範圍內的連字符!

function printValidation(evt) { 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (!evt.shiftKey && !evt.altKey && !evt.ctrlKey && charCode >= 48 && charCode <= 57 || charCode == 188 || charCode == 109) { 
     alert("character accepted"); 
     return true; 
    }else { 
      alert("illegal character detected"); 
      return false; 
     } 
} 

有沒有可能在沒有進入regex的情況下做到這一點?

+0

當你的意思是1-2允許你的意思是字符串「1-2」或兩個整數1和2? –

+0

是的,這些數字是整數,這與我們在Adobe打印PDF文件並輸入特定頁面或打印範圍時相同! – seUser

+0

你的意思是這樣的? https://jsfiddle.net/1mhkpg7d/ –

回答

0

我建議你允許用戶只鍵入有效字符(包括連字符,逗號和空格)並在最後運行正則表達式(當你提交或失去字段焦點時)。 或者你可以用很多if填寫你的函數來測試所有的可能性,例如。僅在另一個不是連字符,逗號或空格的字符之後才允許使用連字符。您可以使用evt.currentTarget.value來讀取該字段的內容。希望幫助:)