0

下面的代码是验证一组选择框,但是通过验证后它不会发布并转到该帖子页面,如何解决?我添加了 return true; 最后,但似乎不起作用,谢谢。

var $selects = $('form select[name^=select]'),
    values = [];

$(':submit').click(function(e) {
  e.preventDefault();
  values = [];
  $($selects).each(function() {
      if($(this).val()) {
          values.push($(this).val());        
      }
  });
    if(!values.length) {
        alert('Please select all categories');
        return false;
    }
  if(values.length < $selects.length || $.unique(values).length < $selects.length) {
    alert('Please select all categories and be unique');
    return false;
  }
  return true;
});
4

3 回答 3

2
$(':submit').click(function(e) {
  //e.preventDefault(); delete this.

它阻止了提交按钮的默认行为 - 提交表单......

return falsee.preventDefault(); + e.stopPropagation();

于 2012-05-08T02:19:57.580 回答
0

有些东西会阻止您的事件侦听器默认操作

var $selects = $('form select[name^=select]'),
            values = [];

        $(':submit').click(function(e) {
          //e.preventDefault(); <--remove this line
          values = [];
          $($selects).each(function() {
              if($(this).val()) {
                  values.push($(this).val());        
              }
          });
            if(!values.length) {
                alert('Please select all categories');
               e.preventDefault(); //<--PUT IT HERE~!!!
                return false;
            }
          if(values.length < $selects.length || $.unique(values).length < $selects.length) {
            alert('Please select all categories and be unique');
            e.preventDefault(); //<-- AND PUT IT HERE~!!!
            return false;
          }
          return true;
        });
于 2012-05-08T02:21:59.483 回答
0

当您要提交时,您需要$('form').submit().

于 2012-05-08T02:30:12.863 回答