Как запретить пользователю вставлять текст в текстовое поле?
У меня есть эта функция JS, которая запрещает пользователю вводить символы
<script type="text/javascript">
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if(!regex.test(key)) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
</script>
<span>Radio Receive:</span>
<input name="ReceiveNo" type="text" class="txtbox" onkeypress='validate(event)' maxlength="11" value="${cpCon.receiveNo}" required tabindex="34" />
Но я заметил, что когда пользователь попытался вставить слово из этого текстового поля, текст можно ввести. Как я могу предотвратить это, не отключая вставку?
Ответы
Ответ 1
Очень простое решение:
<input name="ReceiveNo" type="text" class="txtbox" onkeypress='validate(event)' maxlength="11" value="${cpCon.receiveNo}" required tabindex="34" onCopy="return false" onDrag="return false" onDrop="return false" onPaste="return false" autocomplete=off />
Это сработало для меня очень хорошо. В текстовое поле никто не может вставлять, используя правую кнопку вставки мыши или нажав ctrl + v с клавиатуры.
Ответ 2
//Отключить функциональность вставки
$(document).ready(function(){
$('#txtInput').bind("paste",function(e) {
e.preventDefault();
});
});
//Ниже может быть полезно для вашей функциональности.
$(document).ready(function(){
$('#txtInput').bind("paste",function(e) {
validate(e);
});
});
или
OnTabOut()
или onblur()
вы можете проверить введенный/вставленный текст вместо обработки функциональных возможностей вставки.
Ответ 3
Я пробовал это в моем проекте Angular, и он отлично работал без jQuery.
<input type='text' ng-paste='preventPaste($event)'>
И в разделе script:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
В проекте non Angular используйте 'onPaste' вместо 'ng-paste' и 'event' вместо '$ event'.
Ответ 4
Если вам просто нужен не редактируемый kendoComboBox(), вы можете использовать kendoDropDownList().
В моем случае мне нужно было включить/отключить в зависимости от пользовательских привилегий,
поэтому здесь появилось решение я (это предотвращает ввод ключей и вставки значений):
if (user.hasRight()) {
var myinput = $("#myinput").data("kendoComboBox");
myinput.input.on("keydown", function (e) { e.preventDefault(); });
myinput.input.bind("paste", function (e) { e.preventDefault(); });
}
Вы можете протестировать его здесь
Ответ 5
JQuery
$(this).click(function () {
$(".txtbox").attr("disabled", "disabled");
});
или css:
.txtbox{
display: none;
visibility: hidden;
}
или атрибут html:
set disabled="disabled";