繁体   English   中英

单击时将文本框更改为textarea

[英]Change textbox to textarea on click

如何在用户单击时将简单文本框转换为文本区域。 我正在使用EXT JS。

你是为了视觉外观吗? 或者是否有将其从输入转换为textarea的正当理由?

如果你只是为它的视觉效果而做,那么只需设置textarea的高度就可以获得很长的路径,并且在焦点事件中增加高度。

Ext.onReady(function(){

    new Ext.form.TextArea({
        renderTo: Ext.getBody(),
        name: 'myTextArea',
        width: 200,
        height: 22,
        listeners: {
            focus: function(textarea){
                textarea.setHeight(200);
            },
            blur: function(textarea){
                textarea.setHeight(22);
            }
        }
    });

});

编辑:这些停止工作:

在这里试试: http//jsfiddle.net/chrisramakers/9FjGv/2/

你甚至可以很容易地为它制作一些额外花哨的幻想。
http://jsfiddle.net/chrisramakers/9FjGv/3/

您无法将文本框更改为textarea,因为它们是两种不同类型的元素。 但是,您可以隐藏一个并显示另一个。

<input type='text' id='myTextBox' />
<textarea id='myTextArea' />

有一些功能可以在你想要的任何事件上交换它们:

function swapTexts() {
    var tb = document.getElementById('myTextBox');
    var ta = document.getElementById('myTextArea');
    if (tb.style.display !== 'none') {
        tb.style.display = 'none';
        ta.style.display = '';
    } else {
        tb.style.display = '';
        ta.style.display = 'none';
    }        
}

展示和隐藏是很好的技术。 但是,你可以像这样使用innerHTML属性......

<div id='test'> <input type="text" name="text1" id="text1" onclick="test()"/></div>

<script type="text/javascript">
function test()
{
    document.getElementById('test').innerHTML = "<textarea></textarea>"
}
</script>

如果你想再次改变,给出一些条件或任何事件..这可能有助于你认为..

祝你有美好的一天.....

你可以在同一个div(或表)中有两个单独的TextBoxTextArea控件,然后在单击TextBox显示TextArea

<input type='text' onclick='document.getElementById("txtArId").style.display = ""' />
<TextArea id='txtArId' />

这是jQuery中的一个例子。

HTML:

<tr>
    <td>
        <input name="textInputComment" type="text" value="">
        <textarea name="textAreaComment" style="display: none;"></textarea>
    </td>
</tr>

jQuery的:

 $(document).ready(function()

         $(document).on('focusin', 'input[name=textInputComment]', function () {
              $(this).hide();
              textarea = $(this).closest('tr').find('textarea[name=textAreaComment]');
              textarea.show().focus().val($(this).val());//show, focus and get value from input
         });

         $(document).on('focusout', 'textarea[name=textAreaComment]', function () {
              $(this).hide();
              textarea = $(this).closest('tr').find('input[name=textInputComment]');
              textarea.show().val($(this).val());//get value from textarea
         });
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM