2013-01-31 20 views
1

我想添加一些验证到表单。我有一个jQuery的功能是做正是我想要的:jQuery - 试图做一个if语句中的函数

 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经常会向我投掷曲线球。

回答

1

萤火虫或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; 
}); 
+0

由于'if语句'返回,所以你不需要在'else语句'和'return false'中包含下一个部分两次 –

+0

它仍然没有做任何事情...... Firebug不给我任何东西错误或任何事情。 – Gwendydd

+0

啊哈!这确实解决了它!我不得不用jQuery替换$(这是一个WordPress站点,而WordPress对此非常挑剔)。非常感谢,RET,Roy和Greener! – Gwendydd

0

尝试

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

但功能只约束功能,并调用它的每一个提交时间提交被点击。 所以你必须把签支票提交功能

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; 

     }); 
0

是啊,这逻辑将不太做你希望的东西。尝试是这样的:

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

我可能是错的,但我不认为通过@greener给出的答案是去工作,因为如果#top在页面检查创建时间只会声明提交功能。

+0

@greener接受的答案已更正,因此请忽略上面的注释。 – RET