我有一个文字字段,我只需要1
和0
其他任何内容都会破坏我的逻辑代码。
如何限制在输入字段中输入任何其他字符?
我查看了有关类似主题的帖子,但他们允许0-9之间的数字,依此类推。
我尝试在html中使用pattern
属性,但没有模式可以做到这一点,至少我没有找到它。
我找到了这段代码:
$(function(){
$('#BinaryInputArea').bind('input', function(){
$(this).val(function(_, v){
return v.replace(/\s+/g, '');
});
});
});
限制SPACES
被输入,这再次使用了退伍军人似乎只知道的模式。我尝试在.replace部分添加[2-9]
但遗憾的是它超出了我的逻辑范围。
编辑:我正在使用TextArea进行输入,因此常规input pattern:[0-1]
无法正常工作
答案 0 :(得分:3)
您可以使用正则表达式执行此操作:
var txtInput = document.getElementById("txtInput");
txtInput.addEventListener("keydown", function(evt){
var regEx = /^(0|1)$/;
// Account for two ways to press 0 and 1 on full-size keyboards
var key1 = String.fromCharCode(evt.keyCode);
var key2 = String.fromCharCode(evt.keyCode-48); // Adjustment for the keydown event
// Test key against regular expression
if(!regEx.test(key1) && !regEx.test(key2)){
evt.preventDefault();
}
});

<form>
<textarea id="txtInput"></textarea>
<button>Submit</button>
</form>
&#13;
或者,您可以通过检查按下的特定键来执行此操作:
var input = document.getElementById("txtInput");
// Do event binding in JavaScript, not in HTML
input.addEventListener("keydown", function(evt){
// Get the code for the key that was pressed
var char = evt.keyCode;
// Is the SHIFT key being held down?
if(evt.shiftKey){
// If so, cancel the event
evt.preventDefault();
} else {
// Not the SHIFT key, but if it is 48, 49, 96, 97
// (the four ways to get 0 or 1 on a keyboard with a num pad)
switch (char) {
case 48:
case 49:
case 96:
case 97:
break; // do nothing
default:
// Some other key, cancel the event.
evt.preventDefault();
break;
}
}
});
// Don't allow pasting into the field
input.addEventListener("paste", function(evt){
evt.preventDefault();
});
&#13;
<form>
<textarea id="txtInput"></textarea>
<button>Submit</button>
</form>
&#13;
答案 1 :(得分:1)
如果你想使用javascript来做,你可以这样做:
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 49'>
</input>
编辑:好的,我的第一篇文章只是假装举例说明如何在一条线上完成。但是你需要考虑许多细节,比如允许用户使用键盘键,复制和粘贴事件,删除字符等。你还应该控制用户是否粘贴了无效的值。
所以这是一个更详细的例子:
在一行中:
<input name="number" onkeyup="if (/[^0-1]|^0+(?!$)/g.test(this.value)) this.value = this.value.replace(/[^0-1]|^0+(?!$)/g,'')">
一个jquery示例:
$(document).ready(function() {
$('input.validateBinary').keyup(function(event) {
var regEx = /^(0|1)$/;
if (!regEx.test(this.value)) {
this.value = this.value.replace(/[^0-1]|^0+(?!$)/g, '');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" class="validateBinary" />