动态禁用jQuery日期选择器图标

5

我对jQuery还比较新,一直在寻找一个不错的免费日期选择器。我非常满意jQuery UI的日期选择器,但是我遇到了一个问题。我使用这个项目需要在文本框旁边放置一个图标。虽然这很容易,但我不知道如何动态禁用图标。

有两件事我想知道:

  1. 我如何从代码后台动态更改datepicker的禁用状态,以便在postback时触发?
  2. 是否可以使其禁用状态取决于它所附加的文本框?(即如果
  3. <asp:TextBox Id="txtMyTextBox" Enabled="false">

那么datepicker也会被禁用。

这是我一直在使用的datepicker代码:

<script type="text/javascript">
    $(function() {
        $("*[id$='txtMyTextBox']").datepicker({
            changeMonth: true,
            changeYear: true,
            showOn: 'button',
            buttonImage: '/images/icon-calendar.gif',
            buttonImageOnly: true
        });
    });
</script>
4个回答

11

如果你正在使用jQuery UI日期选择器,为什么不使用内置的禁用命令呢?因此,在提交后,您只需禁用它。

当然,文本框也会被禁用,但我假设这也是您想要的。

// jQuery UI有一个内置的图标,会自动显示 http://jqueryui.com/demos/datepicker/#icon-trigger

// 如何禁用jQuery UI。 http://jqueryui.com/demos/datepicker/#method-disable

下面是在提交后如何禁用文本框。不过,我不确定您是否希望在用户输入信息后立即禁用它。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="ui.all.css" rel="stylesheet" type="text/css" />
        <link href="ui.core.css" rel="stylesheet" type="text/css" />
    <link href="ui.datepicker.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>


    <script type="text/javascript">
        $(function()
        {

            $("#txtMyTextBox").datepicker({ showOn: 'button', buttonImage: 'images/calendar.gif', buttonImageOnly: true });
            var disabled = $('#txtMyTextBox').attr('disabled');
            if (disabled == true)
            {
                $("#txtMyTextBox").datepicker('disable');
            }
            else
            {
                $("#txtMyTextBox").datepicker('enable');
            }


        });


</script>



</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtMyTextBox" runat="server" Enabled="false"></asp:TextBox>
        <asp:Button ID="enable" runat="server" Text="enable" onclick="enable_Click" 
            style="width: 56px" />
        <asp:Button ID="disable" runat="server" Text="disable" 
            onclick="disable_Click" />

    </div>

    </form>
</body>
</html>

后端代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{


    protected void enable_Click(object sender, EventArgs e)
    {
        txtMyTextBox.Enabled = true;
    }
    protected void disable_Click(object sender, EventArgs e)
    {
        txtMyTextBox.Enabled = false;
    }
}

这正是我所寻找的行为。我已经研究了禁用方法。抱歉,我应该更具体说明。我不知道如何从代码后台调用jQuery禁用方法,以便在回发时禁用它。 - Jonn
不知道为什么API文档中再也没有关于“disable”方法的说明了(但它确实可用)。 - Fanky

3

要禁用图片,您只需要执行以下命令:

$("#textWithoutDatePicker").datepicker("disable")

并且为了启用:
$("#textWithoutDatePicker").datepicker("enable")

0

好的,我不确定我是否理解你的意思,但是你想为日期选择器显示相同的图像,但该图像不能被点击,对吗?

所以,不要这样做:

$(".textWithDatePicker").datepicker.....

你应该像这样做:
$(".textWithoutDatePicker").after("<img src='datePickerImage.png' />");

为了帮助您,最好给您的文本框添加一个类来标识您打算为该文本框设置哪种行为。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接