2012-11-06 53 views
2

我有以下結構化妝未來CONTENTEDITABLE元素編輯

<div> 
<ul id='t1'> 
    <li id='l1' contenteditable='true' class='editable'> Lorem ipsum </li> 
    <li id='l2' contenteditable='true' class='editable'> Lorem ipsum </li> 
    <li id='l3' contenteditable='true' class='editable'> Lorem ipsum </li> 
</ul> 
</div> 

當用戶編輯說李L3,當他打進入我希望與CONTENTEDITABLE =真實,SETFOCUS上添加新的利我想在這裏新的李,使用戶可以開始在那裏輸入。 我能夠在輸入時添加新條目,但無法將焦點放在它上面。

更新

if(e.keyCode == 13){//enter Key or tab key 9 
    e.preventDefault(); 
    var taskId = this.id; 
    jQuery.ajax({ 
     url : 'update_current', 
     type : 'put', 
     success : function(resp){ //resp is the new li tag 
      var li = this_is_current_elemtn; 
      jQuery(li).append(resp); 

      //$('#t1 .editable').each(function(){ 
      // $(this).attr('editable', 'false'); 
      //}); 
      console.log(jQuery(li).next()); 

      jQuery(li).next().focus(); 
     // $('#t1 .editable').each(function(){ 
     // $(this).attr('contentEditable', 'true'); 
     // }); 
     } 
    }); 

任何幫助表示讚賞

+0

你嘗試過什麼嗎? – Johan

+0

如果你已經創建了元素,那麼你可以使用$(「#younewelement」)。 –

+0

用焦點和選擇嘗試,但仍然當前contenteditable保持焦點,不轉移焦點到新添加的元素 – Ross

回答

0

試試這個:http://jsfiddle.net/t7GJc/

$('#t1').on('keydown', 'li', function(e){ 
    var c = e.which || e.keyCode; 
    if(c === 13){ 
     e.preventDefault();      
     if($(this).is($('#t1 li:last'))){ 
      $(this).after($('<li id="l'+($('#t1 li').length + 1)+'" contenteditable="true"/>')); 
     } 
     $(this).next().focus(); 
    } 
}); 
+0

添加我的js代碼...有些什麼相同 – Ross

+0

@Ross它不工作就像你想要在jsfiddle演示?如果不是爲什麼? –

+0

哦,是的,它會......嘗試這段代碼,謝謝@adam – Ross

0

jsfiddle

$("ul").on("keyup", "li",function(e){ 
    if(e.keyCode == 13){ 
    var elem = $("<li contenteditable='true'> Lorem ipsum </li>").appendTo ($(this).parent()); 
     elem.focus(); 
} 
     return false; 

    });​ 
+0

謝謝,也會試試這個 – Ross

2

我知道這有點晚了,但無論如何,如果您將contenteditable ='true'添加到父ol或ul中,它就可以實現! :)