【问题标题】:Make Input Field Look Disabled Without Using Disabled Attribute在不使用禁用属性的情况下使输入字段看起来已禁用
【发布时间】:2015-11-20 03:31:29
【问题描述】:

我有一个asp.net webform 和一个datepicker 字段。当用户单击字段末尾的图标时,将显示日历。

我想要的是让input 字段看起来被禁用。我尝试添加属性disabledreadonly="true",但是当我这样做时,我选择的日期没有在我的会话中传递。

所以我需要另一种方法,因为我说过输入的日期是在会话中传递的。

我已经添加了我的background-color,但如果用户在该字段中单击,我需要停止闪烁的光标显示。

我尝试将style="color: transparent !important" 添加到我的input 字段中,但这不起作用。还有其他方法吗?

我添加了我的HTMLJQuery 以显示我的datepicker 当前的工作方式。

HTML

<div class="form-group">
    <asp:Label ID="Step03StartDateLabel" class="col-sm-4 control-label" runat="server" Text="Date you would like us to start *" AssociatedControlID="Step03StartDateField"></asp:Label>
    <div class="col-sm-2">
        <div class="input-group">
            <asp:TextBox ID="Step03StartDateField" runat="server" class="form-control" ToolTip="Click the calendar to select a date." style="background-color: #eeeeee; color: transparent !important;" TabIndex="-1" />
            <div class="input-group-addon">
                <span class="glyphicon glyphicon-calendar" id="Step03StartDateFieldCalendar" style="cursor: pointer"></span>
            </div>
        </div>
    </div>
    <div class="col-sm-offset-4 col-sm-8">
        <asp:RequiredFieldValidator Display="Dynamic" runat="server" ID="reqStep03startDateErrorMessage" SetFocusOnError="true" ForeColor="Red" ControlToValidate="Step03StartDateField" ErrorMessage="Please select a date you would want us to start." />
    </div>
</div>

JQuery

$(function ()
{
     $("#MainContent_Step03StartDateField").datepicker(
     {
          dateFormat: 'dd/mm/yy',
          minDate: '0',
     });

     $("#Step03StartDateFieldCalendar").click(function ()
     {
          $("#MainContent_Step03StartDateField").datepicker("show");
     });

     $("#MainContent_Step03EndDateField").datepicker(
     {
          dateFormat: 'dd/mm/yy',
          minDate: '1'
     });

     $("#Step03EndDateFieldCalendar").click(function ()
     {
          $("#MainContent_Step03EndDateField").datepicker("show");
     });
});

【问题讨论】:

  • 你可以使用cursor: default 并防止通过javascript点击
  • @Ohgodwhy 正如我在帖子中所说,日期不会在我的会话中通过,因为它作为空字符串传递。所以我不能使用disabledreadonly
  • But why? The form data will be submit correctly. 这是一些 ASP 的东西吗? (从未为 ASP 开发过)
  • @Ohgodwhy 不确定它是否只是 asp 的事情,但是当我调试时,虽然我选择的日期显示在我的字段中,但该字段的会话返回为空字符串

标签: javascript jquery html css asp.net


【解决方案1】:

尝试将样式pointer-events: none; (documentation) 添加到您的文本框:

<input type='text' style='pointer-events: none;' />

除了你之前的样式,它还会移除你元素上的鼠标事件(包括闪烁的光标)。

元素永远不是鼠标事件的目标;但是,鼠标事件 如果这些后代有 指针事件设置为其他值。在这些情况下,鼠标 事件将触发此父元素上的事件侦听器 在活动期间适合他们往返后代的途中 捕获/冒泡阶段。

JSFiddlehttp://jsfiddle.net/bppgcjgf/

【讨论】:

  • 这是个好问题。 MDN 的文档甚至说它从 Chrome 1.0 开始就可以使用。
  • 我明白你的意思,一旦附加了 DatePicker,它就不起作用了,
  • @HanletEscaño 除了上面提到的关于我的日期选择器何时显示的问题外,这很好用。这可以在 JQuery 中处理吗?
  • 不确定你在说什么@murday1983
  • @HanletEscaño 显示datepicker 时重新显示光标。您的解决方案适用于用户尝试单击该字段但只要我单击我的图像并显示日历,光标就会显示在该字段中
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多