【问题标题】:asp.net text doesn't send value when disabled禁用时,asp.net 文本不发送值
【发布时间】:2020-12-04 17:48:57
【问题描述】:

我必须使用 jQuery 启用和禁用文本框,这很好用。禁用的文本框在其中具有价值。但我面临的问题是,禁用的文本框不会将值传递给服务器。当我使用 jQuery 启用它时,我会在后面的代码中看到文本框值(调试模式)。任何想法为什么会发生这种情况,或者从代码背后的禁用文本框中获取价值的替代方法。

HTML:

 <asp:TextBox ID="txtUniqueNo" runat="server" onkeyup = "OnChange(this)" required/>

我用来在视图页面中禁用的Javascript

var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('disabled', true);

谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    原因很简单,禁用由于网络浏览器提交限制政策,输入值没有提交到服务器。

    W3 规范规定,禁用的输入标签被视为无效,不应提交。

    改为使用readonly 属性:

    <input type="text" readonly />
    

    或者使用 jQuery:

    $("#<%=txtUniqueNo.ClientID%>").attr('readonly', 'readonly');
    

    更新:

    如果需要,请查看如何删除 readonly 属性:http://jsfiddle.net/ynevet/84HrM/

    【讨论】:

    • 感谢这完成了这项工作。我在后面的代码中获得了价值,如何从文本框中删除只读属性。我正在使用 inputBox.removeAttr('readonly');这是正确的吗?
    • 要同时改变背景,比如在禁用模式下,请添加:txtBox.style.backgroundColor = "#EBEBE4";
    【解决方案2】:

    如果您禁用了文本框,它将不会发回服务器。

    为文本框的值设置一个标签,并为该值设置一个隐藏字段。

    ref from :

    我们会用一些方法来做到这一点

    • 将值发送到服务器端后禁用textbox(或启用textbox并最终发送值disabletextbox

    • textbox 值存储到任何其他控件,控件(span) 应隐藏并获取隐藏的控件(span) 值以发送服务器端'

    • 您可以使用Hidden field 存储文本框值,以便将值发送到服务器端...

    • 或者使用readonly属性代替启用和禁用属性

    【讨论】:

    • 谢谢。 readonly 属性完成了我的工作,尽管您的信息很有用确实支持
    【解决方案3】:

    不要使用启用属性,而是在您想要禁用时尝试在样式中使用禁用,并在您想要启用时更改属性值。

    【讨论】:

      【解决方案4】:
      var inputBox = $("#<%=txtUniqueNo.ClientID%>");
      inputBox.prop('readonly', true);
      

      inputBox.prop('readonly', false);
      

      现在服务器可以读取文本框的值

      【讨论】:

        【解决方案5】:

        在通过 javascript/jquery 提交之前启用并再次从服务器禁用。

        【讨论】:

        • 注意:非常简短的答案和/或回帖者的问题可能应该是 cmets。你只需要 50 个代表点就可以在一个问题下发表评论 - 你能把它移到那里吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-13
        • 2010-11-28
        • 2013-12-12
        相关资源
        最近更新 更多