2014-08-28 78 views
0

我在調用html標籤中的「onFocus」函數時遇到性能問題。我通常不以這種方式調用函數,但我沒有使用自己的代碼。在html標籤中調用函數時的Javascript性能

使用:jQuery的1.4.2

我有兩個問題:

1)是否html標籤裏的函數確實降低性能?例如:

<input type="text" onFocus="javascript:moveCursorToEnd(this.id)" /> 

2)我想要做的就是將光標移動到輸入的結尾,當用戶集中在輸入欄。但是,目標設備無法正常響應(使用Safari的iPad 2)。光標仍然移動到被點擊的位置,大約需要。 15秒完成功能。

我還沒有真正發現任何干淨的,跨瀏覽器兼容的方式將光標移動到輸入字段的末尾。

function moveCursorToEnd(id){ 
     var currentElement=$("#"+id); 
     var currentValue=currentElement.val(); 
     currentElement.focus().val(String.fromCharCode(35)).val(currentValue); 
     } 

然後我把這樣的功能:

<input type="text" onFocus="javascript:moveCursorToEnd(this.id)" /> 

有沒有更好的方式來做到這一點,而羅納爾多,也很想從HTML標籤調用該函數?

+1

我懷疑這與事件附加內聯有關。 'onfocus'處理程序中的focus()會觸發一個新的'focus'事件... – Teemu 2014-08-28 08:45:53

+0

根據跨瀏覽器選項。在我的經驗中,最好的方法是發現要做到這一點是將輸入字段文本存儲在變量中..清除輸入字段,然後將存儲的值寫回輸入..似乎很愚蠢我知道,但還沒有失敗我呢 – haxxxton 2014-08-28 08:50:10

+0

'onFocus'和'javascript:'都是錯誤的。 – Bergi 2014-08-28 08:54:50

回答

0

我的解決辦法:

改變了moveCursorToEndFunction,並以 「onclick」 事件觸發的功能。出於某種原因,使用onfocus在屏幕鍵盤上加載iPad需要大約8秒的時間。

 function moveCursorToEnd(id){ 
    var currentElement=$("#"+id); 
    var currentValue=currentElement.val(); 
    currentElement.val(String.fromCharCode(35)).val(currentValue); 
    }