[英]Client side form validation for Copy/Pastes via Right-Click
我正在使用以下行(Struts1語法)顯示文本字段,並允許通過Javascript進行一些客戶端檢查。
<html:text styleId="myField" property="myProperty" onkeyup="function()" />
我的意圖是每當在表單字段中輸入文本(無論內容如何)時,都會出現一條消息,並禁用下拉列表。 onkeyup
屬性在所有情況下onkeyup
正常工作,除非用戶使用鼠標右鍵單擊粘貼文本。
似乎onmousedown
和onmouseup
事件並未顯示右鍵單擊。 onfocus
。
onchange
僅在失去焦點時進行檢查,但是用戶可以通過粘貼數據並單擊表單提交(與onblur
相同)來規避此問題。
在IE8中, onmouseout
有點起作用(我可以破壞功能),但在Chrome v41.0.2272.89中根本不起作用
是否有人遇到過鼠標右鍵單擊客戶端表單檢查? 我想跨瀏覽器介紹這種用例,並且不能指望最終用戶總是通過鍵盤快捷鍵粘貼。
我按照上面的Aleksandr M的建議使用了jQuery解決方案。
最初,我具有以下功能:
$(document).ready(function(){
$('#myField').bind("paste",function(e) {
toggleFunction(); //preserve already existing function in use with other cases
});
});
但是后來發現,雖然該功能將在用戶粘貼之后運行,但會在實際粘貼文本之前運行。
例:
用戶粘貼(右鍵>粘貼或Ctrl + V);
調用函數並執行,進行條件檢查
粘貼文字。
因此,我改為用預期的最終結果替換了jQuery中的函數調用,並在其他地方進行了一些其他更改,從而滿足了我的假設。
但是除了那些條件,下面的內容最終可以滿足我的需求。
$(document).ready(function(){
$('#myField').bind("paste",function(e) {
document.getElementById("dropdownID").disabled = true;
document.getElementById("showMessage").style.visibility = "visible";
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.