[英]How to clear a textarea value in jQuery?
我试图通过在用户键入不期望的键时添加警报,然后清除文本区域来验证键码输入。 警报功能正常,但文本区域未清除。
我在这里检查了文档,但是我的.val()
行看不到区域。 我也尝试过这样: $("#noteNumberInput").attr('value', "");
场景:我在文本框中输入1-9,但没有任何警报(工作正常),例如,如果我输入字母az,则会弹出警报,但该字母仍保留在文本框中。
我注意到的是,它确实清除了第一个键后的文本区域。 如果我输入字母“ a”,然后输入“ b”,则将“ a”删除并替换为“ b”。
HTML:
<textarea id="noteNumberInput" placeholder="Note number"></textarea>
JS:
var noteNumberInput = document.getElementById("noteNumberInput");
//VALIDATE NOTE NUMBER TEXTAREA
function validate(key) {
var keycode = (key.which) ? key.which : key.keyCode;
//comparing pressed keycodes
if (keycode === 8 || (keycode >= 48 && keycode <= 57)) {
return true;
}
if (keycode < 48 || keycode > 57) {
alert("Please only enter the note number e.g. 1, 2..14 etc.");
$("#noteNumberInput").val("");
return false;
}
}
noteNumberInput.addEventListener("keydown", validate);
当您执行$("#noteNumberInput").val('');
,它会删除文本区域的所有内容,因此如果这不是正在发生的情况,则问题可能出在其他地方。
使用$("#noteNumberInput").val()
将清除文本区域
编辑
问题是keydown
处理程序。 在这种情况下,将触发该功能,然后显示警报,然后将填充文本区域。 但是在使用keyup
该功能将在释放键时触发,因此届时textarea
将填充值。
将keydown
更改为keyup
var noteNumberInput = document.getElementById("noteNumberInput");
noteNumberInput.addEventListener("keyup", validate);
更改noteNumberInput.addEventListener("keydown", validate);
使用keyup
您只要求在按next键时才能真正执行validate()
函数。
我认为这不是触发键事件的最佳方法,因为剪切和拖放操作也可以更改输入元素。
尝试这个:
Element.addEventListener('input', function(){
this.value=this.value.replace(/[^0-9,.]/g, '');
});
这必须适应textarea ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.