动态禁用jQuery Datepicker图标

时间:2010-02-24 02:30:29

标签: asp.net jquery-ui datepicker

我对jQuery很新,我一直在寻找一个体面的免费日期选择器。我对jQuery UI的datepicker非常满意,但我遇到了麻烦。我正在使用它的项目要求我在文本框旁边有一个图标。虽然这很容易,但我不知道如何动态禁用图标。

我有兴趣知道两件事:

  1. 如何从代码隐藏中动态更改datepicker的禁用状态,以便在回发时触发?
  2. 是否可以根据附加到的文本框使其处于禁用状态? (即如果

    <asp:TextBox Id="txtMyTextBox" Enabled="false">

  3. 然后,datepicker也会被禁用。

    这是我一直用于datepicker的代码。

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

5 个答案:

答案 0 :(得分:10)

好吧,如果你使用jquery U.I datepicker为什么不使用内置的disable命令?所以在回帖后你就可以禁用它。

当然文本框也会被禁用,但我认为这也是你想要的。

// 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;
    }
}

答案 1 :(得分:2)

要禁用图片,您只需要此命令:

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

和启用:

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

答案 2 :(得分:0)

好的,我不确定我是否理解你,但你想为datepicker显示相同的图像,但该图像无法点击吗?

所以不要这样做:

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

你应该这样做:

$(".textWithoutDatePicker").after("<img src='datePickerImage.png' />");

为了帮助您,如果您的文本框中有一个类,用于标识您打算使用该文本框的行为,那会更好。

答案 3 :(得分:0)

我非常喜欢kelvin Luck的日期选择器,我最近从jQueryUI中更改了它

http://www.kelvinluck.com/projects/jquery-date-picker/

答案 4 :(得分:-1)

如果有人试图隐藏日期选择器旁边的按钮,请在调用Datepicker对象时使用选项:'showOn':'focus'在发送给构造函数的对象中。在这里观看:http://api.jqueryui.com/datepicker/#option-showOn