2013-01-31 21 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