jquery通过单击复选框提交表单不起作用

问题描述:

单击复选框时应提交表单,但不会发生。一个简单的警报(作为一个测试)确实有效。它出错了哪里?jquery通过单击复选框提交表单不起作用

HTML

<form id="formId" name="formName" action="index.php" method="post"> 
<input name=entry> 
<input type="checkbox" class="checkbox1">1 
<input type="checkbox" class="checkbox2">2 
<input type="checkbox" onclick="this.form.submit();">5 
<input type="submit" name="submit" > 
</form> 

JS

<script type="text/javascript"> 

$(document).ready(
    function(){ 
    $(".checkbox1").click(
     function(){ 
      alert('checkbox 1 clicked'); 
     } 
    ) 
    $(".checkbox2").click(
     function(){ 
      $('#formId').submit(); 
     } 
    ) 
    } 
); 
</script> 
+0

我还没有看到你添加过任何jQuery库。你是? – 2014-09-05 13:07:26

+0

我有点困惑,你是如何得到警戒的工作吗?代码写入的方式不应该起作用。假设我的回答是正确的,我会等待更新(您可能已经忽略了其余的代码)。 – 2014-09-05 13:14:31

+0

这件事情还有些奇怪(仍然在寻找)。我的解决方法(如下)是在单击复选框时触发提交按钮。这提交得很好。 – 2014-09-05 13:34:47

改变 “点击” 到 “变” - 我同意 “点击” 应该工作,但它并不总是对我来说=/

+1

当天你就在这里!即将说出同样的话!第二个答案你也打我,大声笑 – SpYk3HH 2014-09-05 13:08:35

+0

谢谢,我试过了,但那不是。 – user4011806 2014-09-05 15:07:58

忽略下面的第一个问题,我可以看到您的表单不会从提交按钮以外的任何按钮提交。

我的解决方法是trigger一个click事件对你的提交按钮,而不是试图与.submit()提交表单:

例如http://jsfiddle.net/tkdxg66m/1/

$(".checkbox2").click(
    function(){ 
     $('#submitme').trigger('click'); 
    } 
) 

这是非常奇怪的行为,因为submit()应该工作,所以我期待作进一步调查。


年长的答案/以下问题:

你包裹在一个函数的代码不会被调用:

你可能意味着使用DOM准备处理程序是这样的:

 $(function(){ 
      $(".checkbox1").click(
       function(){ 
        alert('checkbox 1 clicked'); 
       } 
      ) 
      $(".checkbox2").click(
       function(){ 
        $('#formId').submit(); 
       } 
      ) 
     }); 

说明:$(function(){your code});是一个快捷方式$(document).ready(function(){your code});

或执行这样的IIFE(立即调用函数表达式):

 (function(){ 
      $(".checkbox1").click(
       function(){ 
        alert('checkbox 1 clicked'); 
       } 
      ) 
      $(".checkbox2").click(
       function(){ 
        $('#formId').submit(); 
       } 
      ) 
     })(); 

的DOM准备选项使得在这种情况下:)

只需使用下面的jQuery代码更有意义。它将用于提交表单。

$(document).ready(function(e) { 
    $(".checkbox2").click(
     function(){ 
      $("#formId").submit(); 
     } 
    ); 
}); 
+0

用JSFiddle中的代码尝试他的表单HTML ...它不提交..确实很奇怪。 – 2014-09-05 13:33:10

+0

究竟是什么区别?为了简化原因,我最初留下了document.ready代码。我已更新了我的原始帖子。上面的代码是完整的。 – user4011806 2014-09-05 15:14:37

Waddayaknow,问题解决了! 事情是:我命名提交按钮“提交”。这会导致问题。我发现这在其他stackoverflow线程; (submit a form using checkbox)和:(Javascript form submit: Object doesn't support this property or method (IE7))。无论如何,感谢您的贡献。