【问题标题】:How to disable ENTER key when a asp.net textarea is in readonly mode当asp.net textarea处于只读模式时如何禁用ENTER键
【发布时间】:2015-05-20 14:02:09
【问题描述】:

ASP.net:

<textarea id="taskNotes" runat="server" class="taskNotes" rows="10" style=""></textarea>

HTML 生成的 ASP.net TextArea:

<textarea name="ctl00$ContentMain$taskNotes" class="taskNotes" id="ContentMain_taskNotes" style="" rows="10" readOnly="readonly"/>

当文本区域具有焦点且只读时,如何禁用 ENTER 键。

我尝试了以下方法,但无法完成:

$('input[class=taskNotes]').keydown(function (e) {
    if (('.taskNotes')) { // '.is()` is not populating in VS for me to complete...
        if (e.keyCode === 13) {
            e.preventDefault();
            return false;
        }
    }
});

【问题讨论】:

    标签: javascript jquery html asp.net


    【解决方案1】:

    试试这个:

    使用它来防止输入键

    $(document).ready(function () {
        $(document).on('keydown', '.taskNotes[readonly]', function(e){
            if (e.which === 13) {
                e.preventDefault();
                return false;
            }
        });
    });
    

    或者作为替代方案,使用它来完全阻止元素的焦点:

    $(document).ready(function () {    
        $(document).on('focus', '.taskNotes[readonly]', function(e){
            $(this).blur();
        });
    });
    

    【讨论】:

    • 这很奇怪,因为我将只读添加为:taskNotes.Attributes.Add("readonly", "readonly"); 我不知道为什么它是大写字母。此外,JS 对我不起作用:/
    • 无论如何要从代码隐藏中添加它?我认为 JS 失败了:/
    • 同样的事情。仍然无法工作:/我放弃了。感谢您的帮助
    • @SearchForKnowledge 您是否将其包装在文档就绪函数中?该元素是页面加载时dom的一部分吗?也看看这个小提琴:http://jsfiddle.net/mzbgdf89/。它有效...
    • @SearchForKnowledge - 很高兴为您提供帮助。 :) 我更新了答案,让第一个选项也能正常工作。
    【解决方案2】:
    $('.taskNotes').keydown(function (e) {    
        if ($(this).attr('readonly') === 'readonly' && e.keyCode === 13) {
            e.preventDefault();
            return false;
        }
    });
    

    您需要从选择器中删除“输入”。它是一个文本区域。 jsFiddle

    添加只读属性可以使用:

    $('.taskNotes').prop("readonly", true);
    

    $('.taskNotes').attr("readonly", "readonly");
    

    取决于您的 jQuery 版本。

    【讨论】:

    • 您可以在重新添加之前尝试删除camel-case属性。 $('.taskNotes').removeAttr("readOnly");看起来很老套,但我需要查看代码才能给出更好的答案
    • 我完全忘了说它在更新面板中,这就是代码不起作用的原因。我 +1 你的代码,因为它是一个解决方案。
    【解决方案3】:

    如果您使用 ASP.Net,您希望使用 TextBox 服务器控件。

    Disabled TextBox 生成 disabled 而不是 readonly。它更适合您的场景。

    你做的方式在 ASP.Net 中不是标准的,它真的很脆弱。你可以阅读Disabled and read-only controls

    <asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton">
        <asp:TextBox ID="MyTextArea" TextMode="multiline"
            Columns="50" Rows="5" runat="server" />
        <asp:Button runat="server" ID="SubmitButton" Text="Submit"
            OnClick="SubmitButton_Click" />
    </asp:Panel>
    
    protected void Page_Load(object sender, EventArgs e)
    {
        MyTextArea.Enabled = false;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2021-11-29
      • 2012-01-26
      • 2021-01-29
      相关资源
      最近更新 更多