我編碼一個所見即所得的編輯器(不能使用類似TinyMCE的東西 - 必須自己編碼),我希望用戶能夠通過向HTML添加標籤來將文本設置爲粗體,下劃線,鏈接等。我得到的問題是,當用戶選擇可編輯的div中的文本,然後單擊「加粗」按鈕時,它無法找到選擇,因爲它已被取消選擇,因爲發生了點擊事件。我怎樣才能阻止呢?有一個更好的方法嗎?如何在點擊HTML後保持選擇?
回答
此功能可以幫助您:
jQuery.fn.getSelectedText = function() {
var sSelectedText = "";
// all browsers, except IE before version 9
if (window.getSelection) {
var sTagName = this.get(0).tagName.toLowerCase();
sSelectedText = (
sTagName == 'input' || sTagName == 'textarea' ?
this.val().substring (
this.get(0).selectionStart
, this.get(0).selectionEnd
) :
document.getSelection().toString()
);
}
// Internet Explorer before version 9
else {
if (document.selection.createRange) {
sSelectedText = document.selection.createRange().text;
}
}
return sSelectedText;
}
也看到我的jsfiddle。
=== UPDATE ===
如果您的按鈕是不是<input type="button/submit" ... />
或<button ...>
,你要記住每次點擊後選擇的文本:
var sSelectedText = '';
$('body').click(function() {
sSelectedText = $('#text').getSelectedText();
});
$('body').dblclick(function() {
sSelectedText = $('#text').getSelectedText();
});
在按鈕單擊選定文本在sSelectedText:
$('#button').click(function(e) {
alert(sSelectedText);
});
另請參閱我的新jsfiddle。
一個想法是跟蹤選擇(通過聽mouseup事件),以便您的代碼知道什麼是突出顯示在給定的時刻,所以你可以做一些事情,當點擊按鈕...
This article有一些很好的代碼示例。
您需要使按鈕不可選,這可以在大多數瀏覽器中使用CSS和IE和Opera中的unselectable
屬性完成。具體方法如下:
我認爲這是最好的解決方案,因爲它實際上保持了選定的文本,而不是將它保存在內存中。 – smfoote
另一種可能更好的方法是在'mousedown'事件中爲'Bold'按鈕調用'preventDefault()'(當選擇被清除時 - 至少在Chrome中):
$('div.boldButton').mousedown(function(event) {
event.preventDefault();
});
幾乎整齊。有時它可能不起作用,在這種情況下,而不是'event.preventDefault()',你只需調用'return false;'.. – SexyBeast
- 1. 如何保持點擊而不是在點擊選擇
- 2. 選擇後保持焦點選擇2
- 3. 保持最HTML鏈接後點擊
- 4. javascript,如何讓html在按鈕點擊後保持不變
- 5. 如何在點擊其他項目(jQuery)時保持選擇?
- 6. 如何在點擊後選擇網頁
- 7. html選擇不可點擊
- 8. 按鈕點擊後保持最後從下拉列表中選擇的值
- 9. Flex TextArea點擊按鈕時保持焦點/選擇
- 10. 如何在點擊提交後讓我的HTML頁面保持原樣?
- 11. 如何在第一次點擊後選擇一個字段後再次點擊
- 12. 如何使圖像按鈕在點擊後保持點擊狀態
- 13. jQuery Datatables在刷新後保持選擇
- 14. 如何使MDL菜單在點擊後保持打開狀態?
- 15. 如何在點擊後保持Qt的pushButton不變?
- 16. 如何讓css按鈕在點擊後保持活動狀態?
- 17. 如何在點擊rel =「external」鏈接後保持全屏模式?
- 18. 如何在點擊後退鍵時保持Android活動運行
- 19. 如何在點擊按鈕onclick後保持alertdialog打開?
- 20. 如何讓菜單在被點擊後保持可見狀態?
- 21. 如何在asp.net mvc 3中點擊submitbutton後保持選定的值?
- 22. 如何在iPhone中點擊UIButton時保持選定的狀態?
- 23. 在textarea中選擇HTML總是在雙擊後選擇空格
- 24. 點擊並保持在PyGTK?
- 25. 保持懸停在點擊
- 26. 保持選擇
- 27. Laravel如何保持選擇選項
- 28. 保持jquery菜單打開後點擊
- 29. 如何在焦點丟失時保持TableView的選擇?
- 30. 保持數組順序選擇HTML
這有什麼用? –
@TimDown好的,對不起,沒有閱讀完整的問題。該按鈕似乎不是''或'