0

我使用 jquery datepicker 创建服务器控件,我在我的渲染方法中进行了初始化。在文本框中我设置自动回发并添加自定义事件以触发 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 选择属性是这样的:

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 我错过了什么?

4

1 回答 1

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);  
    }  
}  
于 2012-10-10T07:19:31.963 回答