2012-03-28 141 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

我希望这会有所帮助,问候。