1

我正在尝试向表单添加一些验证。我有一个 jQuery 函数,它完全符合我的要求:

      jQuery('#post').submit(function() {
                if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').removeClass('button-primary-disabled');
                    return true;
                }else{
                    alert("Please set a Featured Image!");
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').addClass('button-primary-disabled');
                    return false;
                }
                return false;
            });

但是,我想对其进行更改,以便仅在选择页面上其他地方的单选按钮时才运行此功能。所以我尝试了这个:

if (jQuery('#top').checked) {
      jQuery('#post').submit(function() {
                if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').removeClass('button-primary-disabled');
                    return true;
                }else{
                    alert("Please set a Featured Image!");
                    jQuery('#ajax-loading').hide();
                    jQuery('#publish').addClass('button-primary-disabled');
                    return false;
                }
                return false;
            });
    }

这不起作用——即使检查了#top,该函数也不会被调用。谁能解释为什么?我习惯了 PHP,而 JavaScript 经常向我抛出曲线球。

4

3 回答 3

1

firebug 或 Chrome 控制台告诉你什么?你可以尝试这样的事情:

$('#top').is(':checked')

如(感谢RET):

jQuery('#post').submit(function() {
  if ($('#top').is(':checked')) {
    if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
      jQuery('#ajax-loading').hide();
      jQuery('#publish').removeClass('button-primary-disabled');
      return true;
    }else{
      alert("Please set a Featured Image!");
      jQuery('#ajax-loading').hide();
      jQuery('#publish').addClass('button-primary-disabled');
      return false;
    }
  }
  return false;
});
于 2013-02-01T00:00:47.503 回答
0

尝试

$('#top').is(':checked')

但是函数 submit 只绑定函数,每次点击提交时都会调用它。所以你必须把检查过的检查放在提交功能中

  jQuery('#post').submit(function() {

            if(!$('top').is(':checked')){ return };

            if (jQuery("#set-post-thumbnail").find('img').size() > 0) {
                jQuery('#ajax-loading').hide();
                jQuery('#publish').removeClass('button-primary-disabled');
                return true;
            }

            alert("Please set a Featured Image!");
            jQuery('#ajax-loading').hide();
            jQuery('#publish').addClass('button-primary-disabled');
            return false;

        });
于 2013-02-01T00:05:00.553 回答
0

是的,这种逻辑不会完全符合您的期望。尝试类似:

  jQuery('#post').submit(function() {
      if ($('#top').is(':checked')) {
            // all your existing code

#top我可能是错的,但我不认为@greener 给出的答案会起作用,因为如果在页面创建时检查它只会声明提交函数。

于 2013-02-01T00:05:34.790 回答