最近做项目遇到:
问题点:input的回车enter和失焦blur冲突问题:实现回车保存,blur还原编辑内容功能
要实现需求:
1、回车键保存编辑内容
2、input框失去焦点后,不保存编辑内容,还原为原来内容。
如下图所示:
编程中遇到的棘手问题:
按下回车后,保存不了编辑的内容。原因是按下回车,先触发input框的blur事件(此时导致编辑内容被还原,保存不了内容),才触发回车事件。
经过多方尝试,摸索出一下解决办法,终于解决回车和blur冲突的问题,具体代码如下:
inputEditor = $("input.datagrid-editable-input");
$(<span style="color: #0000ff;">this).unbind("blur"<span style="color: #000000;">);
accept();
<span style="color: #008000;">//</span><span style="color: #008000;">input<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>后,自動獲取聚焦</span>
<span style="color: #000000;"> inputEditor.focus();
</span><span style="color: #008000;">//</span><span style="color: #008000;">input失去焦點,撤銷編輯操作,恢復原來的值,不保存</span>
inputEditor.bind("blur",<span style="color: #0000ff;">function</span><span style="color: #000000;">(evt){
reject();
});
</span><span style="color: #008000;">//</span><span style="color: #008000;">按鍵按下,如果是回車鍵,則保存編輯內容</span>
inputEditor.bind("keypress",<span style="color: #0000ff;">function</span><span style="color: #000000;">(evt){
</span><span style="color: #0000ff;">var</span> keyCode =<span style="color: #000000;"> evt.keyCode;
</span><span style="color: #0000ff;">if</span>(keyCode == 13){ <span style="color: #008000;">//</span><span style="color: #008000;">回车事件</span><span style="color: #008000;">
//
<span style="color: #008000;"> alert(evt.keyCode);$(<span style="color: #0000ff;">this).unbind("blur"<span style="color: #000000;">);
accept();
}
});
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
* input獲取焦點后,綁定blur事件
* 在input已獲取焦點的前提下,點擊文檔任何位置,取消編輯內容
* 如果是回車鍵按下,則取消綁定blur,保存編輯內容
* </span><span style="color: #008000;">*/</span><span style="color: #000000;">
inputEditor.bind(</span>"focus",<span style="color: #0000ff;">function</span><span style="color: #000000;">(evt){
$(</span><span style="color: #0000ff;">this</span>).bind("blur",<span style="color: #0000ff;">function</span><span style="color: #000000;">(evt){
reject();
});
$(document).bind(</span>"click",<span style="color: #0000ff;">function</span><span style="color: #000000;">(){
reject();
});
$(</span><span style="color: #0000ff;">this</span>).bind("keypress",<span style="color: #0000ff;">function</span><span style="color: #000000;">(){
</span><span style="color: #0000ff;">var</span> keyCode =<span style="color: #000000;"> evt.keyCode;
</span><span style="color: #0000ff;">if</span>(keyCode == 13){ <span style="color: #008000;">//</span><span style="color: #008000;">回车事件</span><span style="color: #008000;">
//<span style="color: #008000;"> alert(evt.keyCode);
$(<span style="color: #0000ff;">this).unbind("blur"<span style="color: #000000;">);
accept();
}
});
});</span></pre>