2010-04-28 70 views
1

我想在用戶提交表單時設置cookie。Jquery cookie插件 - 當用戶提交表單時設置cookie

我正在使用一些遺留代碼,它基於用戶選中複選框來設置cookie,但希望在用戶提交表單時簡單設置cookie。

這裏是我有,當複選框被選中,其工作原理:

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     if ($('.application-form input[name=marketing]').is(':checked')) 
     { 
      $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
     } 
    }); 
}); 

這工作正常,但檢查「營銷」輸入時,而只是當我不想Cookie集表單提交。像這樣:

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     if ($('.application-form').submit();) 
     { 
      $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
     } 
    }); 
}); 

但是,這不會成功設置cookie,任何想法都會很棒,謝謝。

回答

5

您不需要檢查if條件中是否提交返回值。

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
    }); 
}); 
+0

謝謝,這個工作,但突出了我現在想的其他問題(見上文)。 – Dave 2010-04-28 10:11:31

+0

@Dave - 如果你喜歡,因爲它適合你,將不勝感激。 – Krunal 2010-04-28 12:32:38

5
$(document).ready(function() { 
    $('.application-form').submit(function(e) { 
    e.preventDefault(); 
    $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
    }); 
}); 

你不需要if條件存在,因爲它似乎是測試表單是否已提交或沒有,你已經知道它了,因爲你在表單提交事件處理程序是。

+0

太好了。這會成功設置cookie並提交表單,但是,頁面不會重新載入,也不會轉到它的「謝謝」頁面,而當我使用之前的方法設置cookie時,會發生這種情況。該頁面似乎什麼都不做,即使它設置了cookie,提交到數據庫併發送了一封電子郵件 - 它可以工作,但似乎有些東西連接到了.submit(),我在這裏設置cookie,這會影響形式表現提交後,有什麼想法?謝謝 – Dave 2010-04-28 09:59:24

+0

我有點困惑。設置好cookie之後,您是否希望表單正常提交到其「action」屬性中指定的頁面? 是否刪除「e.preventDefault();」有什麼區別? – GlenCrawford 2010-04-28 10:37:40

+0

是的,這是正確的,我希望它正常提交。刪除「e.preventDefault();」使表單按照我的意願行事,非常感謝。道歉,但正如我所說這是遺留代碼,我不完全知道「e.preventDefault();」確實 - 我不是真的 - 它是這樣做的,因爲它的名字會提示?停止瀏覽器的默認行爲發生,在這種情況下,表單提交?謝謝。 – Dave 2010-04-28 11:04:42