防止在文本字段输入中键入,即使字段未禁用/只读

Prevent typing in Text Field Input, Even Though Field is NOT Disabled/Read-Only

本文关键字:字段 只读 文本 输入      更新时间:2023-09-26

即使我的字段未禁用或只读,我是否可以阻止HTML文本字段输入?我有这个要求。

也许我可以通过JS或jQuery阻止所有输入?

看到这个小提琴

你可以为此使用 jQuery。您可以按以下步骤进行操作

$('input').keypress(function(e) {
    e.preventDefault();
});

您可以只返回 false 而不是使用 preventDefault() 。请参阅下面的脚本

$('input').keypress(function(e) {
    return false
});

看小提琴

没有Javascript的简化版本如下。只需更改您的 HTML 如下

<input type="text" onkeypress="return false;"/>

看小提琴

如果您正在寻找只读输入,一个简单的方法是将"只读"添加到输入 HTML。例如

<input type="number" readonly>

这样,它就不会干扰表单提交或其他事件侦听器。仍会提交带有"只读"的输入,但不会提交带有"已禁用"的输入。

参考资料: https://www.w3schools.com/TAGS/att_input_readonly.asp

如果你想使这个领域变得棘手。

$('input').focus(function(e) {
    $(this).blur();
});

例 : https://jsfiddle.net/DinoMyte/up4j39qr/15/

您可以在

事件上返回 false input或者在每次用户尝试编写内容时使用.val('')重置字段:

$('input').input(function(e) {
    $(this).val('');
});

希望这有帮助。


$('input').on('input', function(e) {
    $(this).val('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />

接受的答案对我来说很好用,但我也想包括 Shift、Esc删除键。 在这种情况下,请使用keydown而不是keypress

$('input').keydown(function(e) {
  e.preventDefault();
});

文档:https://api.jquery.com/keydown/