2一起使用时,JavaScript函数不起作用

时间:2015-06-24 22:38:31

标签: javascript jquery

我有一个小popover窗口,我用这个函数调用:

$('.pop').popover({
    html: true,
    title: function() {
        return $("#popover-head").html();
    },
    content: function() {
        $('#hidden-input').val(this.id);
        return $("#popover-content").html();
    }
});

我有另一个JS函数验证复选框选择,确保至少选择了一个

// required checkboxes
var requiredCheckboxes = $("#car").find(':checkbox[required]');

requiredCheckboxes.change(function(){
    if(requiredCheckboxes.is(':checked')) {
        requiredCheckboxes.removeAttr('required');
    }
    else {
        requiredCheckboxes.attr('required', 'required');
    }
}); 

两者都正常工作,直到我在popover窗口中使用复选框功能。

将这两者结合起来的任何解决方案?

编辑:

HTML:

<!-- Popup select table -->
<div id="popover-head" class="hide">
    Select Animal  
</div>
<div id="popover-content" class="hide">
    <form method="post" id="car">
<fieldset>
    <legend>What is Your Favorite Pet?</legend>
    <input type="checkbox" name="animal" value="Cat" required/>Cats
    <br />
    <input type="checkbox" name="animal" value="Dog" required />Dogs<br />
    <input type="checkbox" name="animal" value="Bird" required />Birds<br />
    <input type="submit" value="Submit now" />
</fieldset>
</form>
</div>

2 个答案:

答案 0 :(得分:0)

将复选框验证功能置于弹出回调中。

extension Array {
    mutating func removeObject<T: Equatable>(value: T) {
        for (index, item) in enumerate(self) {
            if let item = item as? T where item == value {
                removeAtIndex(index)
            }
        }
    }
}

答案 1 :(得分:0)

问题可能是在运行第二个代码段时不存在复选框。

而是将您的更改侦听器委派给正文:

$("body").on('change', '#cars :checkbox[required]', function() { ... });