jquery datePicker fire textchange事件

时间:2012-09-27 06:40:46

标签: c# jquery asp.net jquery-ui-datepicker servercontrols

我用jquery datepicker创建服务器控件,我在我的render方法中初始化。 在文本框中我设置了autopostback并添加自定义事件以触发textchanged 这是服务器端:

protected override void CreateChildControls()
    {
        base.CreateChildControls();

        _txtCalender = new TextBox();
        _txtCalender.ID = "_txtCalender" + this.ID;
        _txtCalender.ReadOnly = true;
        _txtCalender.AutoPostBack = true;
        _txtCalender.TextChanged += new EventHandler(_txtCalender_TextChanged); 
        Controls.Add(_txtCalender);              
 }

//Raised when the select Change
    public event EventHandler SelectionDateChanged
    {
        add
        {
            Events.AddHandler(eventSelectedChange, value);
        }
        remove
        {
            Events.RemoveHandler(eventSelectedChange, value);
        }
    }

    private void _OnSelectedChange(object source, EventArgs e)
    {
        OnSelectedChange(EventArgs.Empty);
    }

    //The method that raises the select Change event.
    protected void OnSelectedChange(EventArgs e)
    {
        EventHandler selectedChangeHandler = (EventHandler)Events[eventSelectedChange];

        if (selectedChangeHandler != null)
            selectedChangeHandler(this, e);
    }
在我的客户端

设置了datepicker select属性,如:

onSelect: function (dateText, inst) {
        try {
            window.console && console.log($(hiddenFld).val()); 

            inst.input.val($(hiddenFld).val()); 
            inst.input.trigger('change');

        }
        catch (err) {
            alert(err);
        }
    }

当我选择日期时,它会创建回发但不会进入OnTextChanged 我错过了什么?

1 个答案:

答案 0 :(得分:2)

这已经解决了。 我希望它可以帮助别人,

当我拿出这条线时:

_txtCalender.ReadOnly = true; 

它有效,我不必在onSelect上添加触发器。 我只是从我的javascript中删除这些行:

onSelect: function (dateText, inst) {  
    try {  
        window.console && console.log($(hiddenFld).val());   

        inst.input.val($(hiddenFld).val());   
        inst.input.trigger('change');  

    }  
    catch (err) {  
        alert(err);  
    }  
}