javascript - 使用 Javascript 或 jQuery 防止在文本字段中输入数字
问题描述
我要求避免在文本类型输入字段中输入数字。我的应用程序仅用于 iPhone 和 Android 等设备。
我尝试使用以下代码:
$("#custName-info").keypress(function (event) {
alert(event.charCode);
var inputValue = event.charCode;
if (!(inputValue >= 65 && inputValue <= 120) && (inputValue != 32 && inputValue != 0)) {
event.preventDefault();
}
});
在这里,代码在 iPhone 上运行得很好,但在 Android 设备上却不行。在调查它时,我发现了以下信息:
- keypress 已弃用,因此应避免使用。但如果这就是原因,为什么它可以在我的 iPhone 或 Chrome 设备模拟器上运行?
- 人们建议使用以下三个替代事件中的任何一个:
keyup, keydown, input, change
- 我进一步发现这三个事件中的任何一个都不适用于设备中的我,因为它们没有让我
charCode
识别数字输入。 - 有一些东西,
keyCode
但后来我不明白charCode
和有什么区别keyCode
所以我对这个问题的最后一句话是,“我怎样才能阻止用户在文本字段中输入数字?iPhone 和 Android 设备中使用的 Web 应用程序”。
解决方案
这对你有用吗?
$("#custName-info").on("input",function(event) {
var inputValue = this.value;
console.log(inputValue);
this.value = this.value.replace(/[0-9]/g,"")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="custName-info" />
请访问https://bugs.chromium.org/p/chromium/issues/detail?id=118639#c283
原来的答案不起作用:
我按照建议替换了keypress
forkeydown
和charCode
forwhich
FIDDLE - 仍然适用于 iOS
$("#custName-info").on("keydown",function(event) {
var inputValue = event.which;
console.log(inputValue);
if (!(inputValue >= 65 && inputValue <= 120) && (inputValue != 32 && inputValue != 0)) {
event.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<input type="text" id="custName-info" />
推荐阅读
- jquery - DataTable 如何将 id 放在按钮上?
- ionic-framework - Ionic 4 SQLite - TypeError: Object(…) is not a function
- c# - 如何忽略 linqpad 中未使用的 dll 引用
- groovy - 如何防止 Groovy 从访问器方法创建字段?
- angular - 如何在 Angular 6 打字稿中访问对象数组中的单个属性?
- java - SpannableStringBuilder append() NullPointerException
- javascript - 列表分配在 JavaScript 中是如何工作的?
- python - 为什么python调用sys.exit时upstart服务不停止
- jquery - 如何从选定的行 datatable.js 获取数据
- machine-learning - 次优的早期停止可以防止机器学习中的过度拟合?