将jQuery Datepicker添加到动态添加的<input />

时间:2010-04-16 14:38:39

标签: jquery asp.net-mvc-2

我有一个在我的控制器中创建表单的方法:

...
sbReturn.Append(String.Format("<p id='planSetupAddNewEffectiveDate'>"));
sbReturn.Append(String.Format("<label for='txtPlanSetupAddNewEffectiveDate'>Effective Date </label>"));
sbReturn.Append(String.Format("<input type='text' id='txtPlanSetupAddNewEffectiveDate' class='plansetupdate' />"));
sbReturn.Append(String.Format("</p>"));
...

有没有办法将日期选择器附加到该文本字段?

我尝试过标准

$(".plansetupdate").datepicker();

$("#txtPlanSetupAddNewEffectiveDate").datepicker();

但实际上都没有生成日期选择器。我知道当从错误添加的控件(即按钮)中捕获事件时,会使用.live(即.xxx.live('click',function()...),这种情况是否类似?

2 个答案:

答案 0 :(得分:5)

你可以使用.liveQuery() plugin for this.live()没有完全替换它,你的案例是一个很好的例子,你这样做是为了得到你的结果'之后:

$(".plansetupdate").liveQuery(function() {
  $(this).datepicker();
});

原因:它目前无效的原因是因为当你执行$(".plansetupdate").datepicker();时它正在做的是:

  • 查找课程planetsupdate
  • 的所有元素
  • 在其上制作日期选择器

但是...你的元素在运行时无法找到,之后又添加了。 .liveQuery()继续看。另外,如果您通过$.ajax()加载此内容,您可以在成功或完整处理程序中加以处理,如下所示:

$.ajax({
  //Stuff
  success: function(data) {
     $(".plansetupdate", data).datepicker();
  }
});

这将查看您的.planetsupdate元素的返回数据,以便添加新的日期选择器。

答案 1 :(得分:0)

它应该有用!

您是通过ajax还是在正常请求期间获取此信息。 您确定您的js代码已正确执行(在输入是在厄运后创建的)。