【问题标题】:script that selects content from dynamic control从动态控件中选择内容的脚本
【发布时间】:2013-10-11 15:53:15
【问题描述】:

我有几个包含动态控件的页面。这意味着我永远不知道页面上有哪些类型或多少个控件。我需要一个脚本,在单击时从文本区域中选择文本。我在想下面的脚本会起作用,但它似乎没有按预期运行。

$(function () {
    $('input[type=textarea]').focus(function () {
        inputValue = this.value;
    });
});


<div style="display: table;">
    <div style="display: table-row">
        <div style="display: table-cell;">
            <span style="font-weight: bold">TextArea 1</span>
        </div>
    </div>
    <div style="display: table-row">
        <div style="display: table-cell;">
            <textarea id="txtTextArea1" rows="3" cols="30">

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    这行不通,因为您将事件绑定到不一定存在于 DOM 中的元素。为此,您应该使用 $.on() 来绑定它,只要元素出现在 DOM 中,它就会起作用。见http://api.jquery.com/on/

    你想做的事:

    $(function () {
        $('.container-element').on('focus', 'textarea', function () {
            var inputValue = $(this).val();
        });
    });
    

    请注意,要将事件绑定到未来元素,您必须提供一个选择器作为 $.on() 的参数。这假设您具有以下结构:

    <div class="container-element">
      <textarea name="some_texarea"></textarea>
    </div>
    

    还要注意,textarea 本身就是一个标签,而不是一种输入。

    【讨论】:

    • 应该是 var inputValue = $(this).val();
    • 这似乎不起作用,因为我没有为 div 使用类。我在我的问题中添加了 html 标记。
    • @nsmanners 如果要将行为委托给不存在的 DOM 元素,则需要某种标识符。您也可以使用$('body').on('focus ... 将其添加到正文中,但这不是最有效的。最简单的是将类或 ID 添加到包装 div 并将其用于您的 $.on()
    【解决方案2】:

    如果您正在谈论选择焦点文本区域中的所有文本,这里已经回答了。

    how to select all text in textarea on focus (in safari)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 2013-05-09
      • 1970-01-01
      • 2019-04-27
      • 2015-04-06
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多