簡體   English   中英

通過右鍵單擊復制/粘貼的客戶端表單驗證

[英]Client side form validation for Copy/Pastes via Right-Click

我正在使用以下行(Struts1語法)顯示文本字段,並允許通過Javascript進行一些客戶端檢查。

<html:text styleId="myField" property="myProperty" onkeyup="function()" />

我的意圖是每當在表單字段中輸入文本(無論內容如何)時,都會出現一條消息,並禁用下拉列表。 onkeyup屬性在所有情況下onkeyup正常工作,除非用戶使用鼠標右鍵單擊粘貼文本。

似乎onmousedownonmouseup事件並未顯示右鍵單擊。 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
    });
});

但是后來發現,雖然該功能將在用戶粘貼之后運行,但會在實際粘貼文本之前運行。

例:

  1. 用戶粘貼(右鍵>粘貼或Ctrl + V);

  2. 調用函數並執行,進行條件檢查

  3. 粘貼文字。

因此,我改為用預期的最終結果替換了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM