我用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 我错过了什么?
答案 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);
}
}