iT邦幫忙

0

[已解決]JQ複製貼上input,無法清除貼上的文字

如標題,想請問貼上複製的文字貼到input[type=text]中,為甚麼無法用一般的清除文字框的方式清掉貼上的文字?

$("#test").on('paste',function (e) {
            let PasteTxt=e.originalEvent.clipboardData.getData('text');
            console.log(PasteTxt);//有值
            $(this).val("")//無法清除
             console.log($(this).val());
            
        });

額外想問,雖然我可以在input看到文字但為甚麼無法再JQ中抓到VALUE?請問這個是跟複製貼上與實際在INPUT中輸入的機制有不同嗎?謝謝各位解惑

2 個回答

1
通靈亡
iT邦研究生 3 級 ‧ 2020-10-13 11:27:43
最佳解答

https://jsfiddle.net/gkxzny19/14/

$('#test').on('paste', function (e) {
    // prevent paste action
	e.preventDefault();
  
	let PasteTxt=e.originalEvent.clipboardData.getData('text');
	$('#test').val('').val(PasteTxt)
});
kekeke iT邦新手 5 級 ‧ 2020-10-13 11:31:12 檢舉

您好~謝謝你的回答我覺得我好像沒說清楚,我想在貼上後執行比對的程序,比對完成後會清空INPUT中的文字,這樣要如何清除?因為我有試過
$('#test').val('')還是無法清除文字框的內容/images/emoticon/emoticon02.gif

通靈亡 iT邦研究生 3 級 ‧ 2020-10-13 11:35:20 檢舉

ke11vin30

$('#test').on('paste', function (e) {
    // prevent paste action
    e.preventDefault();
    
	let PasteTxt = e.originalEvent.clipboardData.getData('text');
    
    if (condition === false) {
        $('#test').val('')
    }
	else {
        $('#test').val(PasteTxt)
    }
});
kekeke iT邦新手 5 級 ‧ 2020-10-13 11:39:34 檢舉

/images/emoticon/emoticon12.gif

1
japhenchen
iT邦大師 1 級 ‧ 2020-10-13 11:32:48

加一行 e.preventDefault();

$("#test").on('paste',function (e) {
            e.preventDefault();
            let PasteTxt=e.originalEvent.clipboardData.getData('text');
            console.log(PasteTxt);//有值
            $(this).val("")// 可以清除
             console.log($(this).val());            
        });

JSFiddle

看更多先前的回應...收起先前的回應...

加 e.preventDefault();
拿掉 $(this).val("")
還是沒值哦他只是阻止貼上而已

kekeke iT邦新手 5 級 ‧ 2020-10-13 11:37:30 檢舉

謝謝J大~能請問為甚麼加上防止預設的動作就可以正常執行

kekeke iT邦新手 5 級 ‧ 2020-10-13 11:38:48 檢舉

listennn08沒值剛好可以達到我要的功能~~謝謝各位解惑

有值哦,底下的JSFiddle有測試出來,抓完值再清除,正常哦!

因為paste還會有後續工作,像是鍵盤的onkeyup, onkeypress,如果你不中止後面的工作,input會是鎖定變更狀態

kekeke iT邦新手 5 級 ‧ 2020-10-13 11:43:43 檢舉

japhenchen
對的~這樣是正常的~
了解~~謝謝解惑/images/emoticon/emoticon02.gif

哪裡有值?
第一個 console 是 clipboardData 的值
paste 也要等 keyup 值才會出現 這也是為什麼他沒辦法清除的原因

通靈亡 iT邦研究生 3 級 ‧ 2020-10-13 11:48:49 檢舉

listennn08
它要的效果應該是貼上後,條件不符,需要用$(this).val("")清空值

通靈亡
這樣用 e.preventDefault 確定條件符合也能貼上嗎?
你那樣寫是可以啦XD
但是 e.preventDefault 的用法的確就是阻止預設動作

通靈亡 iT邦研究生 3 級 ‧ 2020-10-13 12:02:03 檢舉

通靈亡我剛剛發現我測試的方法不對XD

kekeke iT邦新手 5 級 ‧ 2020-10-13 12:07:48 檢舉

人如本名真的通靈~~太神拉

我要發表回答

立即登入回答