2016-02-26 30 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来读取该字段的内容。希望帮助:)