我对Javascript很新。
我要求允许only digits and enter key as input in a textarea box
。我还想允许用户paste ONLY digits into the textarea
。
在StackOverflow上搜索问题后,我发现了以下内容:
function validate(key)
{
//getting key code of pressed key
var keycode = (key.which) ? key.which : key.keyCode;
var phn = document.getElementById('textarea');
//comparing pressed keycodes
if (keycode < 48 || keycode > 57)
{
return false;
}
<div>
<textarea id="textarea" rows="4" cols="50" onkeypress="return validate(event)" />
</div>
不幸的是,这并不能完全解决我的问题。我想允许用户按enter
。如何更改上面的代码以允许“输入”按下以及整数粘贴事件?
答案 0 :(得分:1)
这是一个非常简单的修改。只需在代码中添加“等于”语句即可。此外,由于您还想处理粘贴事件,因此您需要一个事件监听器和“onPaste”函数。
方法1:使用“onPaste”事件
function validatepaste(e) {
var pastedata = e.clipboardData.getData('text/plain');
if (isNaN(pastedata)) {
e.preventDefault();
return false;
}
}
function validate(e) {
//getting key code of pressed key
var keycode = (e.which) ? e.which : e.keyCode;
var phn = document.getElementById('textarea');
//comparing pressed keycodes
if ((keycode < 48 || keycode > 57) && keycode !== 13) {
e.preventDefault();
return false;
}
}
这是一个有效的fiddle
以下是"onPaste"事件的一些信息。
方法2:使用“onKeyUp”代替“onPaste”和“onKeyPress”
此方法不太优雅,但如果您的环境不支持“onPaste”
,则该方法有效function validate(e) {
var invalidcharacters = /[^0-9]/gi
var phn = document.getElementById('textarea');
if (invalidcharacters.test(phn.value)) {
newstring = phn.value.replace(invalidcharacters, "");
phn.value = newstring
}
}
<div>
<textarea id="textarea" rows="4" cols="50" onKeyUp="validate(event)"></textarea>
</div>
答案 1 :(得分:0)
你的if语句应该看起来像是什么 if(keycode == 13 || keycode&gt; x1 AND keycode&lt; x2 || keycode&gt; y1 AND keycode&lt; y2) 提供有效的输入 其他 输入无效
其中x是数字的数字范围,y是字符的数字范围。
答案 2 :(得分:0)
function validate(){
const input = document.getElementById("input")
const regex = /[^0-1|\n\r]/g
input.value = input.value.split(regex).join('');
}