C# 如何防止用户直接编辑asp:TextBox?

C# 如何防止用户直接编辑asp:TextBox?,c#,jquery,asp.net,visual-studio,C#,Jquery,Asp.net,Visual Studio,我有一个文本框,其中包含一个时间值,用户可以指定该时间值来查看某些内容。只有以0或5结尾的时间才有效,因此我使用Jquery滑块让用户选择他们想要查看的时间 这是我的文本框: <asp:TextBox ID="TimeSelect" runat="server" BorderWidth="2px" Text="" ReadOnly="false"></asp:TextBox> 下面是编辑它的代码,滑块的更改回调将调用该代码: function

我有一个文本框,其中包含一个时间值,用户可以指定该时间值来查看某些内容。只有以0或5结尾的时间才有效,因此我使用Jquery滑块让用户选择他们想要查看的时间

这是我的文本框:

 <asp:TextBox ID="TimeSelect" runat="server" BorderWidth="2px" Text="" ReadOnly="false"></asp:TextBox>
下面是编辑它的代码,滑块的更改回调将调用该代码:

            function OnSelectedSliceChanged(value) {
                var now = new Date();
                var currentTime = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
                currentTime.setMinutes(currentTime.getMinutes() - currentTime.getMinutes() % 5);
                currentTime.setMilliseconds(0);
                currentTime.setSeconds(0);

                var millisecondsToSubtract = (<%=ViewState[MaxTicks]%> -value) * oneInterval;

                var newTime = new Date(currentTime.getTime() - millisecondsToSubtract);

                $("#TimeSelect").attr("value", Pad("" + newTime.getHours(), 2) + ":" + Pad("" + newTime.getMinutes(), 2));
            }
现在,滑块成功地更改了文本框中的时间,但用户仍然可以手动编辑文本

我试图通过设置ReadOnly=true来阻止用户直接编辑文本框。但是,这导致我的滑块也无法编辑文本框


有没有办法阻止用户编辑文本框,但仍让代码编辑它?

尝试禁用聚焦文本框的功能

$("#TimeSelect").prop("disabled", true);
编辑 要防止输入变灰,或应用新样式,请使用CssClass属性添加一个或多个类

<asp:TextBox ID="TimeSelect" runat="server" CssClass="time-textbox" BorderWidth="2px" Text="" ReadOnly="false"></asp:TextBox>

尝试禁用聚焦文本框的功能

$("#TimeSelect").prop("disabled", true);
编辑 要防止输入变灰,或应用新样式,请使用CssClass属性添加一个或多个类

<asp:TextBox ID="TimeSelect" runat="server" CssClass="time-textbox" BorderWidth="2px" Text="" ReadOnly="false"></asp:TextBox>
TextBox.ReadOnly属性与HTML ReadOnly属性不同。前者忽略在客户端所做的任何更改。后者防止用户更改输入,但允许脚本更改输入

在服务器端尝试以下操作:

TimeSelect.Attributes["readonly"] = "readonly";
或者在客户端:

$("#TimeSelect").prop("readonly", "readonly");
当然,这两者都不能完全阻止用户更改文本框。您可以使用inspector编辑属性,甚至可以在请求发出前捕获请求并修改值。确保验证服务器端的值。

TextBox.ReadOnly属性与HTML ReadOnly属性不同。前者忽略在客户端所做的任何更改。后者防止用户更改输入,但允许脚本更改输入

在服务器端尝试以下操作:

TimeSelect.Attributes["readonly"] = "readonly";
或者在客户端:

$("#TimeSelect").prop("readonly", "readonly");

当然,这两者都不能完全阻止用户更改文本框。您可以使用inspector编辑属性,甚至可以在请求发出前捕获请求并修改值。确保在服务器端验证这些值。

这是一个类似的问题

我喜欢这样:

<asp:textbox id="txt1" onfocus="blur()" runat="server"/>

而不是OnKeyPress=false,因为如果用户试图复制和粘贴某些文本,它的行为与我们所希望的不同。

这是一个类似的问题

我喜欢这样:

<asp:textbox id="txt1" onfocus="blur()" runat="server"/>

而不是OnKeyPress=false,因为如果用户试图复制和粘贴某些文本,它的行为与我们所希望的不一样。

try ReadOnly=true。@djs是的,我想提一下,但我想这是他的意思。毕竟,为什么ReadOnly=False会阻止滑块工作?@djs oops typo!如果为true,则滑块也无法编辑文本框。我不希望ReadOnly标志对滑块有任何影响,也不希望其他任何以编程方式更改代码的内容。我以为它只是阻止了输入设备的更改。我想我可能弄错了。try ReadOnly=true。@djs是的,我本来想提的,但我想这就是他的意思。毕竟,为什么ReadOnly=False会阻止滑块工作?@djs oops typo!如果为true,则滑块也无法编辑文本框。我不希望ReadOnly标志对滑块有任何影响,也不希望其他任何以编程方式更改代码的内容。我以为它只是阻止了输入设备的更改。我想我可能弄错了。谢谢!成功了!=]有没有办法防止文本变成灰色?@cskoala请看我编辑的答案。请别忘了把答案标为正确。谢谢,祝你好运!谢谢成功了!=]有没有办法防止文本变成灰色?@cskoala请看我编辑的答案。请别忘了把答案标为正确。谢谢,祝你好运!