如何使用 jquery 在 input type="text" 和 textarea 之间切换

Posted

技术标签:

【中文标题】如何使用 jquery 在 input type="text" 和 textarea 之间切换【英文标题】:how to switch between input type="text" and textarea using jquery 【发布时间】:2013-04-02 19:52:32 【问题描述】:

请帮助我处理此代码或使用 jquery 在 input type="text" 和 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>

【问题讨论】:

你能给我们看看 html 吗?您可能需要检测textarea 所在的节点编号,然后用input 字段替换该节点索引。它们是不同类型的元素,因此您需要捕获要传输的数据,然后用新元素重写元素位置。 您的第二个函数正在尝试访问未定义的textarea 变量。 ***.com/questions/2382289/…的可能副本 您使用的是什么版本的 jQuery?以这种方式使用.toggle() 不再有效(1.8 版本已弃用,1.9 版本已删除)。 更改 【参考方案1】:

以下内容应该适合您。

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

【讨论】:

以上是关于如何使用 jquery 在 input type="text" 和 textarea 之间切换的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 API “input type='file'” 标签使用本地文件更改视频源...没有 Jquery 或外部库

如何使用 jQuery 实现 <input type="text"> 的 onchange?

如何使用 jQuery 从 HTML <input type="date"> 中提取值

jQuery - INPUT type = File,Image FileType验证选项?

如何在 jquery 方法中获取 asp.net 会话值?

input(type="checkbox"|type="radio")+jquery使用