3

我有一个带有值的标准 html 标签:

<label id="telefon" value="101"></label>

我喜欢通过单击标签来编​​辑此值,然后在出现的文本框上输入新值(如value="202")。

我怎么能做这么棘手的事情?

我用 JQuery 函数试过了,但它真的不起作用:

$(function() {

  $('a.edit').on("click", function(e) {
    e.preventDefault();
    var dad = $(this).parent().parent();
    var lbl = dad.find('label');
    lbl.hide();
    dad.find('input[type="text"]').val(lbl.text()).show().focus();
  });

  $('input[type=text]').focusout(function() {
    var dad = $(this).parent();
    $(this).hide();
    dad.find('label').text(this.value).show();
  });

});
4

3 回答 3

9

http://jsfiddle.net/jasuC/,由于您没有提供标记,请查看此工作示例

$(document).on("click", "label.mytxt", function () {
    var txt = $(".mytxt").text();
    $(".mytxt").replaceWith("<input class='mytxt'/>");
    $(".mytxt").val(txt);
});

$(document).on("blur", "input.mytxt", function () {
    var txt = $(this).val();
    $(this).replaceWith("<label class='mytxt'></label>");
    $(".mytxt").text(txt);
});
于 2013-10-07T10:00:58.317 回答
1

你不需要jquery。

要使几乎所有标签元素都可编辑,contentEditable请将true.

因此,您可以使用 HTML 的默认功能进行更改。

于 2013-10-07T10:01:58.573 回答
0

// 您可以将事件侦听器添加到您的表单标签并编写所有标签通用的处理程序(Fiddle HERE

// HTML

<form id="myform">
    <label style="background-color:#eee" title="101">Value is 101<label>
</form>

// JS

$(function(){
    $('#myform').on('click',function(e){
        var $label = $(e.target), $form = $(this), $editorInput = $('#editorInput'), offset = $label.offset();
        if($label.is('label')){
            if( !$editorInput.length){
                $editorInput = $('<input id="editorInput" type="text" value="" style="" />').insertAfter($label);
            }
            $editorInput.css('display','inline-block')
                .data('editingLabel', $label.get(0))
                .focus()
                .keydown(function(e){
                    var $l = $($(this).data('editingLabel')), $t = $(this);
                    if(e.which == 13){
                        $l  .attr('title', $t.val().replace(/(^\s+)|(\s+$)/g,''))
                            .text('value is now ' + $l.attr('title'));

                        // UPDATE YOUR DATABASE HERE

                        $t.off('keydown').css('display','none');
                        return false;
                    }
                });
        }
    });
});

// 一点 CSS

#editorInput{display:none;padding:2px;border:1px solid #eee;margin-left:5px}
于 2013-10-07T10:45:39.427 回答