使用jQuery将标签更改为空文本框

时间:2016-04-27 08:52:03

标签: jquery textbox label

我想使用Jquery函数用空文本框替换Label。下面是我工作的代码。

<label>Label1</label><br />
<input type="button" value="Edit" id="Edit" />
$( "#Edit" ).click( function() {
    $( "label" ).replaceWith( function() {
        return "<input type=\"text\" value=\"" + $( this ).val("") + "\" />";
    });
});

Link

5 个答案:

答案 0 :(得分:1)

Label没有与之关联的value属性。您需要使用.text()代替.val()来获取文字内容:

$( "#Edit" ).click( function() {
    $( "label" ).replaceWith( function() {
        return "<input type=\"text\" />";
    });
});

<强> Working Demo

答案 1 :(得分:1)

您可以尝试以下代码:

<label id="labelId">Label1</label><br />
<input type="button" value="Edit" id="Edit" />
<script type="text/javascript">
    $("#Edit").click(function () {
        $("Label#labelId").replaceWith(function () {
            return "<input type='text' value='' />";
        });
    });
</script>

希望这会对你有所帮助:)。

答案 2 :(得分:0)

任何与价值相关的#1规则。尝试.val()。value和.text()。如果他们都失败了,那就深入挖掘。

$( this ).text()

将为您提供当前值。

但我的建议是废弃输入并添加:

<label contenteditable="true">Label1</label>

答案 3 :(得分:0)

根据此.replaceWith(...).prev(...),甚至是.clone(...).replaceAll(...),您可以......

$('#Edit').on('click', function()
{
    // IF YOU WANT TO REPLACE BY THE CURRENT INPUT
    $(this).prev('label').replaceWith(this); // see that I ensure the previous element is a labal
    // ELSE
        // IF YOU WANT KEEP EVENT HANDLERS
        $(this).clone(true).replaceAll($(this).prev('label'));
        // ELSE
        $(this).clone().replaceAll($(this).prev('label'));
        // FI
    // FI
})

答案 4 :(得分:0)

return "<input type=\"text\" />";

DEMO

只需这样返回以便输入为空,您也可以添加ID或类,以便稍后在需要时引用输入,如下所示

return "<input type=\"text\" class=\"classname\"/>";