2012-03-28 125 views
2

我有以下請求:的jquery/JavaScript的轉換純文本消息轉換爲文本輸入字段

上創建的編輯觸發點擊時轉變成一個文本輸入元件的純文本字段。當離開輸入元素時,文本將被存儲在數據庫中,並且該字段將被轉換回帶有新內容的純文本字段。當在輸入中按ESC時,最近的值被恢復。爲此,我使用以下代碼:

<div id="value"><span id="text">some text</span></div> 
<div id="trigger">[EDIT]</div> 
<div style="display: none;" id="storage"> 
    <input type="text" id="input" value="some text"/> 
</div> 

<script type="text/javascript"> 
    $('#trigger').click(function() { 
    var t = $('#text').detach(); 
    var e = $('#input').detach(); 

    $('#storage').append(t); 
    $('#value').append(e); 
    e.focus(); 
    }); 

    $('#input').blur(function() { 
    var t = $('#text').detach(); 
    var e = $('#input').detach(); 

    if (t.text() != e.val()) { 
     $.getJSON(...); 
    } 

    $('#storage').append(e); 
    $('#value').append(t); 
    }); 

    $('#input').keyup(function(event) { 

    if (event.which == 27) { 
     $('#input').val($('#text').text()); 
     $('#input')[0].blur(); 
    } 

    }); 

</script> 

感謝@nnnnnn這現在可以工作。但是,有沒有更簡單的方法來實現這一點使用一些預先存在的API函數?

非常感謝。

+0

不應該'$ {'#someActiveInput'}。focus();'是'$('#someActiveInput')。focus();'? – j08691 2012-03-28 20:38:42

+0

也許有點太晚了(已經工作了12個小時),但我看不到我的版本和你的版本有什麼區別?儘管如此 - 這僅僅是一個例子 - 它是如何工作的 - 所以這不是問題的部分;) – LordHelmchen 2012-03-28 20:44:15

+0

大括號與括號之間的關係。並不是說這是一個解決方案,而只是一個關於這種方式是錯字還是故意的問題。 – j08691 2012-03-28 20:47:03

回答

0

我開發了一個插件,你需要什麼:

$.convertTo

我希望這會有所幫助,問候。