28

ユーザーが文字を入力できないようにするこの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" />

しかし、ユーザーがこのテキストボックスから単語を貼り付けようとすると、テキストを入力できることに気付きました。ペーストを無効にせずにこれを防ぐにはどうすればよいですか?

4

6 に答える 6

62

非常に簡単な解決策:

<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を押したりして、テキストボックスに貼り付けることはできません。

于 2013-05-22T02:38:38.633 に答える
25

//貼り付け機能を無効にするには

$(document).ready(function(){
  $('#txtInput').bind("paste",function(e) {
      e.preventDefault();
  });
});

//以下の1つは、機能に役立つ場合があります。

$(document).ready(function(){
  $('#txtInput').bind("paste",function(e) {
    validate(e);
  });
});

また

OnTabOut()またはonblur()、貼り付け機能を処理する代わりに、入力/貼り付けされたテキストを検証できます。

于 2013-03-10T07:52:38.920 に答える
5

Angularプロジェクトでこれを試しましたが、jQueryがなくても問題なく動作しました。

<input type='text' ng-paste='preventPaste($event)'>

そしてスクリプト部分で:

$scope.preventPaste = function(e){
   e.preventDefault();
   return false;
};

非角度プロジェクトでは、「ng-paste」の代わりに「onPaste」を使用し、「$event」の代わりに「event」を使用します。

于 2014-08-03T11:45:57.367 に答える
1

編集不可能な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(); });

}

ここでテストできます

于 2017-05-26T10:07:31.053 に答える
1

VanillaJSソリューション

function pasteNotAllowFunc(xid){
 let myInput = document.getElementById(xid);
     myInput.onpaste = (e) => e.preventDefault();
} 

pasteNotAllowFunc('pasteInput')
Paste
<input id="pasteInput" value="paste not allow"/>
<hr/>
Textarea
<textarea id="test" value="Copy me and try to paste"></textarea>

于 2021-03-30T13:24:17.470 に答える
-4

jQuery:

    $(this).click(function () {
    $(".txtbox").attr("disabled", "disabled"); 

  });

またはcss:

.txtbox{
 display: none;
 visibility: hidden;
 }

またはhtml属性:

 set disabled="disabled";
于 2013-03-10T07:49:27.500 に答える