粘贴时如何从输入字段中删除特殊字符?
How to remove special characters from input fields while pasting?
我正在尝试实现在用户粘贴文本时应删除 <
、>
、$
和 !
.
的功能
以下代码适用于所有输入。目前它禁用粘贴功能。
function specialCharRestriction() {
setTimeout(function(e) {
$('input, textarea').bind("cut copy paste", function(e) {
e.preventDefault();
});
$('input:not([type=password]), textarea').on('keypress', function(e) {
var blockSpecialRegex = /[!$(){}[\]:;<+?\>]/;
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (blockSpecialRegex.test(key)) {
e.preventDefault();
return false;
}
});
}, 500);
}
相反,我想要这样的东西:
$('input').val().replace(regex, '');
这样它可以应用于所有输入,我不必 select 一个接一个地输入所有输入。我的项目中声明了 100 多个字段,因此请帮助提供一些可应用于所有输入字段的通用代码。
编辑:我希望每当有人粘贴 <Naruto>
时,只应粘贴 Naruto
而 <> 应被省略。以下代码只能运行一次,然后粘贴特殊字符。
$('input, textarea').bind("input", function(e) {
var blockSpecialRegex = /[!$(){}[\]:;<+?\>]/g;
let txtOrig = $(this).val();
let txtFinal = txtOrig.replace(blockSpecialRegex, '');
if (txtOrig !== txtFinal) {
// Some blocked special chars was found and removed
// Warning: this will move the cursor to the end!
$(this).val(txtFinal);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
input1:<input id="txt1"><br>
input2:<input id="txt2"><br>
input3:<input id="txt3"><br>
textarea1:<textarea id="txt4"></textarea><br>
textarea2:<textarea id="txt5"></textarea><br>
textarea3:<textarea id="txt6"></textarea><br>
我正在尝试实现在用户粘贴文本时应删除 <
、>
、$
和 !
.
以下代码适用于所有输入。目前它禁用粘贴功能。
function specialCharRestriction() {
setTimeout(function(e) {
$('input, textarea').bind("cut copy paste", function(e) {
e.preventDefault();
});
$('input:not([type=password]), textarea').on('keypress', function(e) {
var blockSpecialRegex = /[!$(){}[\]:;<+?\>]/;
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (blockSpecialRegex.test(key)) {
e.preventDefault();
return false;
}
});
}, 500);
}
相反,我想要这样的东西:
$('input').val().replace(regex, '');
这样它可以应用于所有输入,我不必 select 一个接一个地输入所有输入。我的项目中声明了 100 多个字段,因此请帮助提供一些可应用于所有输入字段的通用代码。
编辑:我希望每当有人粘贴 <Naruto>
时,只应粘贴 Naruto
而 <> 应被省略。以下代码只能运行一次,然后粘贴特殊字符。
$('input, textarea').bind("input", function(e) {
var blockSpecialRegex = /[!$(){}[\]:;<+?\>]/g;
let txtOrig = $(this).val();
let txtFinal = txtOrig.replace(blockSpecialRegex, '');
if (txtOrig !== txtFinal) {
// Some blocked special chars was found and removed
// Warning: this will move the cursor to the end!
$(this).val(txtFinal);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
input1:<input id="txt1"><br>
input2:<input id="txt2"><br>
input3:<input id="txt3"><br>
textarea1:<textarea id="txt4"></textarea><br>
textarea2:<textarea id="txt5"></textarea><br>
textarea3:<textarea id="txt6"></textarea><br>