.submit()返回false导致奇怪的(对我而言)行为

时间:2012-01-11 13:08:16

标签: php jquery

我想要的是计算文章列表中的哪些复选框被选中,并且我正在选择“toDel”jquery变量。

然后,如果“toDel”仍为空,我想停止提交表单,如果有的话,我正在进行操作,将“toDel”值添加到隐藏字段值。

如果选中它一切正常,但是如果我点击按钮并且没有选择chechbox,那么“return false”会以某种方式停止,而当我选择新的复选框时,我无法进入“正确”的代码部分。

我在这里查了一下,并发现我不能使用“return false”所以我尝试使用验证器变量,但它的行为相同。

    $(document).ready(function(){
$("#jqdeleteselected").on("click", function(){
  var toDel='';
      $('.jqchkbx').each(function() {
         if ($(this).attr('checked')) {
          toDel += ($(this).attr('value')+',')
         }
    });
    console.log(toDel);

    $("#send").submit(function() {
        var valid = true;
        if (toDel != '') {

        $('#boxevi').val(toDel);        
        console.log('filled');

        }
        console.log('empty');
        valid = false;


    });         
    return valid;
});

});

<form method="POST" action='.$_SERVER['REQUEST_URI'].' name="send" id="send">
<input type="hidden" id="boxevi" name="boxevi" />
<input type="submit" id="jqdeleteselected" value="Obriši označene">
<input type="submit" name="addnew" value="Dodaj novi artikl" /></form><br /></div>';

2 个答案:

答案 0 :(得分:1)

您只需要处理submit事件:

$(document).ready(function(){

    $("#send").submit(function() {
        var toDel='';
          $('.jqchkbx').each(function() {
             if ($(this).attr('checked')) {
              toDel += ($(this).attr('value')+',')
             }
        });
        console.log(toDel);

        if (toDel != '') {
            $('#boxevi').val(toDel);        
            console.log('filled');
        }else{
            console.log('empty');
            return false;
        }
    });

});

答案 1 :(得分:0)

您只需要处理提交,您可以使用:选中的选择器来加快检查速度

$(document).ready(function(){
    $("#send").submit(function() {
        var toDel='',
            $this = $(this),
            checkd = $(".jqchkbx:checked");
        checkd.each(function() {
            toDel += $(this).val() + ',';
        });
        console.log(toDel);

        if (checkd.length > 0) {
            $('#boxevi').val(toDel);        
            console.log('filled');
        }else{
            console.log('empty');
            return false;
        }
    });

});