2013-02-15 116 views
1

我有一個DIV與<div contentEditable="true" id="content"></div>,我的問題是,在使用JavaScript來發布div的內容後,光標仍在DIV內閃爍,我希望此div在提交其內容後失去焦點,那我怎樣才能讓光標在提交後從DIV中移除?我已經嘗試過在提交之後將模糊設置爲此DIV,但無濟於事。HTML5內容可編輯的DIV焦點

$('.save-button').on('click',function(){ 
    var newBio = $("#content").text(); 
    newBio = $.trim(newBio); 

    $.post(postdatahere, 
      function(data) { 
      $("#content").blur(); 
      $('.save-button').hide(); 
     }); 
}); 

而且,是它更好地使用.text()擺脫編輯DIV或.html()數據?

回答

0

我想明白了,您需要關注不同的用戶文本輸入來移動光標,因爲在內容可編輯div變模糊之後光標停留在那裏。

所以您的代碼會是這個樣子:

$('.save-button').on('click',function(){ 
    var newBio = $("#content").text(); 
    newBio = $.trim(newBio); 

    $.post(postdatahere, 
      function(data) { 
      $("#SomeUserInput").focus(); 
      $(".save-button").focus(); 
      $('.save-button').hide(); 
     }); 
}); 

雖然不應該.save-button是一個ID而不是一類? 如果是的話這將是

$.post(postdatahere, 
      function(data) { 
      $("#SomeUserInput").focus(); //blur #content by focusing on different element 
      $('#save-button').focus(); // focus on the button to remove focus from #SomeUserInput and because it is going to be hidden anyways. 
      $('#save-button').hide(); 
     }); 
}); 

(是的,這是有點一個黑客攻擊。)

當談到是否使用.text().html(),這取決於你想要什麼。如果你想要樣式(斜體,粗體字體等),你會想要使用.html(),但是如果你這樣做,確保你有某種服務器端過濾器,所以你不會在你的網站上得到任何壞腳本。否則,.text()將會很好。

希望這會有所幫助!

+0

我正在考慮把重點放在'身體'上,但這並沒有奏效,save-button是一個Button元素,它能像DIV一樣獲得焦點嗎? – kabuto178 2013-02-15 03:03:57

+0

@ kabuto178我這麼認爲,它有點不同。它通過網頁按鈕選項卡也會得到重點,但再次,所以做鏈接。就像我說的,我自己並沒有嘗試過,但我認爲他們可以。 – Stephen 2013-02-15 03:07:09

+0

會給它一個鏡頭感謝您的建議 – kabuto178 2013-02-15 03:10:40

3

您可以嘗試在提交/ ajax請求之前使div可修改,並在/ ajax請求結束後啓用編輯。無論天氣如何解決您的問題,這都需要完成,因爲這是一個很好的做法。

+0

採取點,我欣賞提示。保持他們的到來大聲笑 – kabuto178 2013-02-15 04:11:07

+0

沒問題...在這裏任何幫助 – aWebDeveloper 2013-02-16 16:27:49

+0

要質疑你的觀點上面,是否更好地讓點擊時也可編輯div? – kabuto178 2013-02-16 18:42:33