为什么我必须调用一次警报以使javascript正常工作?

时间:2012-08-17 19:13:24

标签: jquery

这个问题真的很奇怪。我想要做的是将复选框值添加到隐藏字段,如果未选中,则从隐藏字段中删除该值。我使用javascript来实现这一点,但是,我发现只有我调用一次警报,代码工作,否则,它不会。谁能告诉我为什么?

var cpo={
    AddCheckList:function(){
    alert('aaaaaaaaaa'); //If I comment this line, the following code won't work.
    $(".BillChecked").change(function() {
            if ($(this).is(':checked')) {
                var idList = $('#CPO_BillList').val() + $(this).attr('value') + ",";
                $('#CPO_BillList').val(idList);
            } else {
                var temp = $('#CPO_BillList').val().replace($(this).attr('value') + ',', '');
                $('#CPO_BillList').val(temp);
            }
            alert($('#CPO_BillList').val());
    });
}

我打电话            cpo.AddCheckList(); 在页面底部。

以上是$(document).ready()函数。只有在调用一次警报方法时才有效。

2 个答案:

答案 0 :(得分:0)

尝试这种方式,检查代码并避免循环。

$(document).ready(function(){

    var billChecked = $(".BillChecked");
    var cpoBill = $('#CPO_BillList');

    var cpo = {AddCheckList:function(){

        billChecked.change(function(){

            var checked = $(this).is(':checked');
            var billVal = $(this).val();

            checked ? v = cpoBill.val() + billVal : v = cpoBill.val().replace(billVal + ',', '');
            cpoBill.val(v);
        });
    };

});

答案 1 :(得分:0)

警告对话框阻止执行其余的javascript。以下之一将起作用:

将代码放入

$(document).ready(function{
    /*code here*/
});

或将脚本块放在<body>标记的底部。

此外,您应该将$(".BillChecked")存储在一个变量中,因为每个带有Selector的jQuery调用都非常昂贵。

var $billChecked = $(".BillChecked");