当前位置: 首页 > 知识库问答 >
问题:

jQuery timepicker未加载动态文本字段

燕刚毅
2023-03-14

我有一个表单,它首先加载文本字段,并有一个与之关联的时间选择器。用户还可以单击“更多”按钮,该按钮动态加载下面的额外文本字段。这也有一个与之相关联的时间选择器,但是它不会加载到动态字段上。我正在使用Trent Richardson的jQuery timepicker插件http://trentrichardson.com/examples/timepicker

我还找到了以前的答案(https://stackoverflow.com/questions/18666634/jquery-timepicker-doesnt-work-on-dynamic-input),但这并不能解决我的问题。

这是形式;第一个div是动态加载的:

<div class="row">
<a href="#more" rel="[{$day}]" id="addhour_{$outlet}_{$day}" class="btn-more add-hours-link">Add More+</a>
<div class="sample" style="display: none;">
    <label>&nbsp;</label>
    <input type="text" class="outlet-hour from timepicker2" name="from[{$day}][]" />
    <span>to</span>
    <input type="text" class="outlet-hour to timepicker2" name="to[{$day}][]" />
</div>


<div>
    <label for="from_{$outlet}_{$day}">{$name}</label>
    <input id="from_{$outlet}_{$day}" class="outlet-hour from timepicker" type="text" name="from[{$day}][]" />
    <span>to</span>
    <input id="to_{$outlet}_{$day}" type="text" class="outlet-hour to timepicker" name="to[{$day}][]" />
</div>

null

这是主要字段的JS(工作正常):

$('.timepicker').timepicker({
    showSecond: false,
    timeFormat: "H:mm",
    stepMinute: 15
});

这是添加额外字段的JS:

$(document).on('click', 'a.add-hours-link', function(event, hour){
    var from = !!hour ? hour.from : '';
    var to = !!hour ? hour.to : '';

    $('.timepicker2').removeClass('hasDatepicker');
    $('.timepicker2').each(function(){
    $(this).timepicker({
        showSecond: false,
        timeFormat: "H:mm",
        stepMinute: 15
    });
});

    $(this).parent().find('.sample')
        .clone()
        .removeClass('sample')
        .appendTo($(this).parent())
        .find('.from').val(from).end()
        .find('.to').val(to).end()
        .fadeIn('fast');

    return false;
});

目前,我已将该类重命名为timePicker2,并删除了hasDatepicker类,如前面的回答中所述。

任何想法都值得赞赏。谢谢

共有1个答案

富波光
2023-03-14

您需要在添加到DOM之后应用timepicker函数:

$(document).on('click', 'a.add-hours-link', function(event, hour){
    var from = !!hour ? hour.from : '';
    var to = !!hour ? hour.to : '';

    $(this).parent().find('.sample')
        .clone()
        .removeClass('sample')
        .appendTo($(this).parent())
        .find('.from').val(from).end()
        .find('.to').val(to).end()
        .fadeIn('fast');

        $('.timepicker2').removeClass('hasDatepicker');
        $('.timepicker2').each(function(){
        $(this).timepicker({
        showSecond: false,
        timeFormat: "H:mm",
        stepMinute: 15
        });
    });

    return false;
});
 类似资料:
  • 在VAADIN组件中,用户可以选择插入一到N个问题答案。 初始:第一个答案应有一个文本字段,带有按钮(“添加另一个答案”) 按下按钮时,应为第二个答案添加一个新的文本字段,以此类推。。。 我的问题是,如何在按钮按下时实现新文本字段的动态加载? 我添加了一张我如何想象这个问题的图片。

  • 关于Xamarin形式指南(http://developer.xamarin.com/guides/cross-platform/xamarin-forms/localization/)对于本地化,我们创建Resx并为每个平台构建自定义本地化类。这一部分非常简单明了。 我的问题是,我需要在应用程序中发送所有本地化的文件,还是有一种方法,当用户在我的应用程序中更改语言时,我从服务器下载所需的Resx

  • 问题内容: 如何可靠,动态地加载JavaScript文件?这将用于实现模块或组件,该模块或组件在“初始化”时将根据需要动态加载所有需要的JavaScript库脚本。 使用该组件的客户端不需要加载实现该组件的所有库脚本文件(并将标记手动插入其网页),只需加载“主”组件脚本文件即可。 主流JavaScript库如何做到这一点(原型,jQuery等)? 这些工具是否将多个JavaScript文件合并到脚

  • 问题内容: 我有一个非常大的javascript文件,仅当用户单击某个按钮时才想加载。我正在使用jQuery作为框架。有内置的方法或插件可以帮助我做到这一点吗? 更多详细信息:我有一个“添加注释”按钮,该按钮应该加载TinyMCE javascript文件(我已经将所有TinyMCE东西都煮成了一个JS文件),然后调用tinyMCE.init(…)。 我不想在初始页面加载时加载它,因为不是每个人都

  • 问题内容: 现在,在我的页面中,我有两个CDN文件的链接,一个是JS,另一个是CSS文件。 即在我的身体底部 在头上 但是现在,我的主页上并不需要它们,而只需要一条特定的路线。所以我一直在研究如何在路由被命中时才延迟加载这些CDN资源,即只有那时? 这些不是通过bower或npm安装的,而是通过CDN URL加载的,例如jquery。如何在Angular 1和Webpack中基于路由延迟加载? 问