2013-04-10 25 views
2

请帮助我在此代码或其他工作代码上使用jquery在输入类型=“text”和textarea之间切换。如何使用jquery在输入类型=“文本”和textarea之间切换

$(function(){ 
$("a#change").toggle(function(){ 
    var input = document.getElementById('text'), 
    textarea = document.createElement('textarea'); 
    textarea.id = input.id; 
    textarea.cols = 40; 
    textarea.rows = 5; 
    textarea.value = input.value; 
    input.parentNode.replaceChild(textarea,input); 
    return false; 
},function(){ 
    textarea.parentNode.replaceChild(input,textarea); 
    return false; 
}); 

});

<input type="text" name="text" id="text" /><a href="#" id="change">change</a> 
+1

你能告诉我们HTML吗?您可能需要检测'textarea'是哪个节点号,然后用'input'字段替换该节点索引。它们是不同类型的元素,因此您需要捕获要传输的数据,然后使用新元素重写元素位置。 – 2013-04-10 19:41:24

+1

你的第二个函数试图访问一个未定义的'textarea'变量。 – 2013-04-10 19:41:37

+0

可能的副本http://stackoverflow.com/questions/2382289/changing-input-text-to-textarea-just-like-in-facebook – inputError 2013-04-10 19:42:42

回答

4

以下应为你工作。

var textbox = $("#textbox"); 
var textarea = $("<textarea id='textarea'></textarea>"); 
$("#change").click(function() { 
    //Check for textbox or textarea 
    if ($("#textbox").length === 1) { 
     //Copy value to textarea 
     textarea.val(textbox.val()); 
     //Replace textbox with textarea 
     textbox = textbox.replaceWith(textarea); 
    } else { 
     //Copy value to textbox 
     textbox.val(textarea.val()); 
     //Replace textarea with textbox 
     textarea = textarea.replaceWith(textbox); 
    } 
}); 

你可以在第二行设置你需要的列和行。

jsFiddle

相关问题