2012-08-15 75 views
1

我正在使用qunit框架進行單元測試,這是我在Chrome中使用jQuery(即var $ textarea = $(''))以編程方式創建的HTML交互。這裏是我用來更新textarea中的選擇的代碼。單元測試中的Javascript setSelectionRange沒有像預期的那樣運行

TextAreaView.prototype.setSelectionOffsets = function(cursor) { 
    var input = this.$textarea.get(0); 
    if (!input.setSelectionRange) { 
     return; 
    } 
    if (cursor.start <= input.value.length && cursor.end <= input.value.length) { 
     input.focus(); 
     input.setSelectionRange(cursor.start, cursor.end, "forward"); 
    } 
} 

我覈實,我調用這個方法與0 < cursor.start == cursor.end < input.value.length。

當我使用調試器時,一切都顯示正常 - 但是在它命中「input.setSelectionRange」行後,對輸入元素的檢查顯示selectionEnd和selectionStart屬性= 0,selectionDirection =「none」

我很困惑這裏發生了什麼。我已經閱讀了textarea元素上的Mozilla's documentation,我相信我對setSelectionRange的調用是有效的。難道這不知何故與我以編程方式創建了textarea並且實際上並未顯示的事實有關?

回答

2

找到這個問題的答案,因爲我打字的問題,所以我想我會分享的人誰可以在此絆倒。答案很明顯,我在我的最後一句中基本上碰到了:我正在用$('')創建一個textarea DOM元素並存儲該對象,但我從未將該對象插入到文檔中。在將元素附加到主體後,setSelectionRange按預期更新選擇。在我的情況下,在我的單元測試結果頁面上顯示實際的textarea並不是很理想,但是通過調用$ textarea.hide()可以很容易地解決這個問題。

相關問題