从下拉列表中选择后触发更改事件

时间:2017-10-09 21:27:21

标签: javascript jquery timepicker

我有一个JQuery timepicker定义为

<div class="form-group">  
    <label class="col-xs-4 col-md-3 control-label" align="right">
        <div class="pull-right">{{ jc_settings_form.meeting_time.label() }}</div>
    </label>
    <div class='col-xs-8 col-md-9 dateContainer' style="max-width:200px">
        <div class='input-group input-append date'>
            <input type="select" class="form-control timepicker" name="meeting_time" id="meeting_time"/>
        </div>
    </div>
</div>

这是表单中的一个选项,我想在用户更改字段时运行表单的自动验证,所以我有一些像

这样的javascript
$('.manage_jc_settings_form')
    .formValidation({
        framework: 'bootstrap',
        excluded: ':disabled',
        ignore: [],
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            name: { 
                meeting_time: {
                    validators: {
                        notEmpty: {
                            message: 'Please provide a meeting time'
                        }
                    }
                },...

出于任何原因,如果我从timepicker下拉列表中选择一个时间,它甚至不会触发更改,因此不会验证表单?如果我单击文本字段并手动更改时间,它甚至会触发更改? 这是我的timepicker初始化

(function($) {
    $(function () {
        $('#meeting_time').timepicker({
            defaultTime: '{{ jc_settings_form.meeting_time.default }}',
            dropdown: true,
            scrollbar: true,
            startTime: '9:00 am',
            timeFormat: 'h:mm a', // equivalent to 'h:mm a'
            interval: 5 //Number of minutes the up/down arrow's will move the minutes value in the time picker
        });
    });
})(jQuery);

任何想法如何强制它触发更改事件?我想也许我必须改变类型=&#34; text&#34;输入字段的属性?

2 个答案:

答案 0 :(得分:1)

你可以在jQuery Timepicker的change事件上运行一个函数,如下所示:

(function($) {
    $(function () {
        $('#meeting_time').timepicker({
            defaultTime: '{{ jc_settings_form.meeting_time.default }}',
            dropdown: true,
            scrollbar: true,
            startTime: '9:00 am',
            timeFormat: 'h:mm a', // equivalent to 'h:mm a'
            interval: 5,
            change: function(time) {
                alert('things changed');        
            }
        });
    });
})(jQuery);

It's listed on the docs here.

答案 1 :(得分:0)

从你的帖子中你并不完全清楚你要做什么。如果您希望每次从下拉列表中选择不同的选项时验证表单,您可能需要尝试使用onchange,如下所示:

<input type="select" class="form-control timepicker" name="meeting_time" id="meeting_time" onchange="yourValidationFunction()" />

我也考虑尽可能远离jQuery,因为你可能最终会发现它的语法糖导致的问题比它解决的更多(更不用说它会大大延长页面加载时间)。