Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery提交表单问题_Javascript_Jquery - Fatal编程技术网

Javascript jquery提交表单问题

Javascript jquery提交表单问题,javascript,jquery,Javascript,Jquery,我有一张单选按钮的表格。在提交表单之前,我需要检查是否选中了10个单选按钮。这段代码起到了作用(即,我在检查了10后得到了警报),但我无法确定在哪里放置我的return true和return false语句来停止它,或者在我的计数达到10时让它提交 $('.submit').click(function () { var radios = $(':radio'); var count = 0; $.each(radios, function () {

我有一张单选按钮的表格。在提交表单之前,我需要检查是否选中了10个单选按钮。这段代码起到了作用(即,我在检查了10后得到了警报),但我无法确定在哪里放置我的
return true
return false
语句来停止它,或者在我的计数达到10时让它提交

  $('.submit').click(function () {
      var radios = $(':radio');
      var count = 0;
      $.each(radios, function () {
          if ($(this).is(':checked')) {
              count++;
              alert(count);
          }

          if (count === 10) {
              alert('hi')
              return true;
          }
      })
      return false;
})
此时,底部的
return false
停止表单提交,即使计数为10,但我需要在那里返回
false
以立即停止表单提交


希望这是有意义的。

试试这样的方法:

$('.submit').click( function(){
  return $('#yourform :radio:checked').length == 10;
});
希望有一个像
#yourform
这样的容器id,您可以使用它使选择器更加具体,如上所述


编辑:根据您的评论,如果您希望可靠地拦截表单提交(例如,即使在未单击按钮的情况下提交),其他人建议您应将行为附加到表单的提交事件

$('#yourform').submit( function(e){
  var hasTen = $(this).find(':radio:checked').length == 10;
  if( !hasTen ){
    e.preventDefault();
    alert('Please check ten boxes.');
  }
});
使用而不是
返回false。此外,请使用提交事件而不是单击事件:

var the_form = $('#theformid');
the_form.submit(function (event) {
    var radios = the_form.find(':radio:checked');
    if (radios.length !== 10) {
        event.preventDefault();
        // provide feedback here.
    }
});

如果附加到单击事件,您的表单仍然可以使用键盘提交。

为什么要检查迭代中的计数? 您应该通过将检查放在每个函数之外来解决此问题

$('.submit').click(function () {
  var radios = $(':radio');
  var count = 0;
  $.each(radios, function () {
      if ($(this).is(':checked')) {
          count++;
      }          
  });

  if (count == 10) {
          return true;
          alert("great!");
  }
  return false;
})
我还建议您使用console.log(msg)而不是alert(msg),这比调试要好得多;)


编辑:我现在看到了您对该警报的评论,我认为它是为了调试目的而存在的,这就是为什么a告诉您有关console.log;)

太好了。非常简洁…但我需要提供一个警报,如果10还没有被检查,所以我需要一个if的东西。event.preventDefault()看起来像獾。