2013-04-10 68 views
7

我知道,當用戶按下Enter鍵時,瀏覽器通常會自動處理自動更正/大寫/等。但是我使用了contenteditable屬性,並對「enter」做了一些特殊的處理,這要求我在用戶按下enter鍵時使用evt.preventDefault()。由於我在偵聽器中使用了preventDefault(),因此移動Safari會將自動更正的氣泡打開,並且它看起來非常怪異/不可用。有沒有其他方法(可能使用JS來觸發一個事件)來消除泡沫或觸發正常行爲,而不必取消preventDefault?當用戶按下Enter時,是否有另一種方式觸發移動Safari(iOS上)的自動更正/自動完成功能?

我不想擺脫自動更正功能,因爲它對我的應用程序很重要。

+0

更一般地說,當iOS在屏幕上顯示輸入值的提議自動更正時,有沒有辦法在javascript中使用自動更正後獲取值? – rakslice 2013-08-06 23:10:09

+0

您可以在contenteditable div中使用'onfocus'' onblur'等。 – 2013-08-11 07:28:18

回答

0

應該有示例代碼!但我認爲你說的是​​這樣的:

$("#myForm").submit(function(event) { 
    event.preventDefault(); 
    // Do other stuff 
}); 

所以我敢肯定你能火.blur手動-event可能的大火,自動完成功能:

$("#myForm #myInput").blur(); 

如果這個答案是錯誤的,請提供示例代碼 - 不是Stackoverflow上的所有人都是魔術師。

+0

我不知道原始海報的代碼是什麼樣的,但是如果我有一個帶有'event.preventDefault'調用的'keypress'處理函數,在'event.preventDefault'之前添加一個'blur'不會得到我更正的文字:http://jsfiddle.net/LGWrJ/ – rakslice 2013-08-14 18:22:22

0

我會說,它很容易與焦點設置, 與以前的答案與提交的自動行爲將繼續自動糾正工程..

$("#MyInput").focus(function(event){ 
    event.preventDefault(); 
}); 
$("#MyInput").blur(){ // do events you want on focus lost.. from input.. :) 
}); 

我認爲這會做..

相關問題