jquery提交表单复选框

时间:2011-08-27 23:20:31

标签: jquery

所以我只想在选中复选框时提交(我想在未选中复选框时执行其他操作)。我一直试图让这个复选框提交工作,但没有用。这就是我所拥有的:

$('#checkbox').click(function() { 
    if ($(this).attr('checked')) {
        $("#form").submit(function () {
            var newvals = $("#form").serialize();   // serialize data

            $.post('save.php', newvals, function(data) { 
                $("#content").html(data);
            }); // posting data and dumping response onto page      

            return false;
        }); 

    } else {

        alert(2); // placeholder for what i want to do otherwise
    }

});

我环顾四周,正在寻找.trigger.live,但是我甚至在考虑逻辑如何与这些功能一起工作时遇到了问题。我不反对使用它们,只要我可以区分“已选中”框和“未选中”框。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在您的代码中,每次选中复选框时,都会附加表单submit事件处理程序。它不会触发提交事件并按照您的期望行事。

您应该在复选框的click事件处理程序之外附加提交事件处理程序,并在选中复选框时触发表单的提交事件。试试这个

$function(){

    $("#form").submit(function () {

      var newvals = $("#form").serialize(); // serialize data
      $.post('save.php',newvals,function(data) { 
        $("#content").html(data);
      });   // posting data and dumping response onto page      

      return false;
    });   

   $('#checkbox').click(function() { 
    if(this.checked) {//Just this.checked will say whether its checked or not
        //Now trigger the form submit event
        $("#form").trigger('submit');
    } 
    else{
       alert(2); // placeholder for what i want to do otherwise

       //I think you want to erase the textboxes. 
       //You can find all the input elements and set there value to empty
       $("#form input").val('');
    }
   });

});

答案 1 :(得分:0)

从内到外打开逻辑 - 将处理程序附加到表单提交,并在那里检查您的输入是否被选中。我可能会这样做:

$(function(){
    $('form').submit(function(e){
        e.preventDefault();

        if ($('#checkbox').is(':checked')) {
            alert('submit');
        } else {
            alert('do not submit');
        }

    });
});