禁用时,datepicker值为空,jquery

时间:2010-06-08 22:08:34

标签: jquery datepicker

我对jQuery很新。我在用户控件中有一个Jquery日期选择器。我在datepicker中添加了“disable”属性。每当我保存页面(具有此用户控件)时,禁用设置为true的datepicker为空。所有其他日期选择器保存得很好。

这是我的代码。

ASPX

< USERCONTROL:DATEPICKER id =“dpBirthDate”startyear =“1980”runat =“server”Disable = true>

ASCX  < input type =“text”size =“8”runat =“server”id =“txtDate”name =“txtDate”onblur =“ValidateForm(this.id);” />

ASCX代码背后

Public Property Disable() As Boolean
        Get
           Return (txtDate.Disabled = True)
        End Get
        Set(ByVal bValue As Boolean)

            If (bValue = True) Then
                txtDate.Attributes.Add("Disabled", "True")
            Else
                txtDate.Attributes.Remove("Disabled")
            End If

        End Set


    End Property

我的Jquery

$(document).ready(function(){

    $("input[id$=txtDate]").datepicker({ showOn: 'button', buttonImage: '<%=ConfigurationSettings.AppSettings("BASE_DIRECTORY")%>/Images/el-calendar.gif', buttonImageOnly: true });
    $("input[id$=txtDate]").mask("99/99/9999", { placeholder: " " });


    //Disable datepicker if "disable=true"
    $("input[id$=txtDate]").each(function() {

    if ($("input[id$=" + this.id + "]").attr("Disabled") == "True") {          
            $("input[id$=" + this.id + "]").datepicker("disable");               
        }
        else if ($("input[id$=" + this.id + "]").attr("Disabled") == "False") {
            $("input[id$=" + this.id + "]").datepicker("enable");
        }

    });


});

对不起,我不知道如何在这里格式化代码。我为杂乱的代码道歉。 任何人都可以告诉我为什么datepicker值在禁用时为空,但是否则正常工作? 谢谢你的到来。

3 个答案:

答案 0 :(得分:1)

只是一个猜测,但尝试使用READONLY而不是DISABLED?

答案 1 :(得分:0)

我认为也使用readonly属性为true,不会更改回发中的初始值

如果坚持通过readonly属性使用它,您将更改获取文本的覆盖 像这样

public override string Text
{
    get
    {
        if (!base.ReadOnly)
            return base.Text;

        string s = HttpContext.Current.Request.Params[this.UniqueID];
        if (s == null)
            return base.Text;
        else
        {
            base.Text = s;
            return s;
        }
    }
    set
    {
        base.Text = value;
    }
}

此致

答案 2 :(得分:0)

这段代码对我有用

$('input:checkbox[name=cmpltInd]').change(function () {
   if ($(this).is(':checked')) {
      $('#efctDt').attr('readonly', true).datepicker("option", "showOn", "off");
   }
   else {
      $('#efctDt').attr('readonly', false).datepicker("option", "showOn", "focus");
   }
});
if ( ($('input:checkbox[name=cmpltInd]') != "undefined") && ($('input:checkbox[name=cmpltInd]').prop("checked")== true)) {
     $('#efctDt').attr('readonly', true).datepicker("option", "showOn", "off");
 }