2012-03-05 82 views
1

我正在通過AJAX post調用運行表單,但是我的複選框上的值保持不變,無論我在處理郵件腳本時是否選中它。

我希望在未選中時更改該值。因此,取消選中複選框會將值更改爲「否」等。

這是我的代碼,我做錯了什麼?

<input type="checkbox" name="newsletter" id="newsletter" checked="checked" value="1"/> 

Ajax調用是在這裏: http://pastebin.com/gFGbWZ1D

PHP的郵件腳本這裏: http://pastebin.com/d6hCVmzQ

乾杯, 邁克

+0

它最好是在這裏發佈代碼,而不是鏈接到它。 – 2012-03-05 23:31:43

+0

我的鏈接數量有限,我可以發佈..plus phpcode無法正常顯示。但是我使用PasteBin的主要原因是我原來的消息沒有被2頁代碼充斥。 :) – 2012-03-05 23:43:26

回答

1

複選框的值將始終爲1,無論是否在使用jQue查看它的值時被檢查RY。
你需要做的是看是否複選框被選中:

var newsletter = $("#newsletter").is(":checked")?1:0; 
+0

我實際上把它與本·阿什頓的評論結合起來,它完美地工作了(我想本是YES/NO值而不是1/0)。 – 2012-03-06 00:28:18

1
$('#newsletter').click(function(){ 
    if($(this).val() == 1) { 
     $(this).val('no'); 

     // I'd recommend doing it this way for consistency sake 
     $(this).val(0); 
    } 
}); 
+0

這也不起作用。我假設這和實際的郵件腳本之間有衝突。 – 2012-03-05 23:55:27

1

你必須檢查你的PHP腳本的郵件複選框的值,並處理它略有不同。

我的方法是這樣:

if(isset($_POST['newsletter'])&&$_POST['newsletter']==1) $newsletter="yes"; else $newsletter="no"; 

您正在使用PHP來確定在這種情況下的價值,因爲一個複選框只能有一個值!如果選中,則值將爲html值,但在我的示例中,我們僅使用if語句中HTML字段的值:

if(isset($ _ POST ['newsletter'])) //檢查這個元素是否存在於表單提交中,並且 $ _POST ['newsletter'] == 1 //檢查複選框是否被選中。如果您回顯$ _POST ['newsletter']的值,它將始終爲1,因此您需要調整郵件腳本的邏輯,以便使用「如果選中,然後是yes;否則」類型的樣式的東西。

+0

沒有工作..你嵌入這個地方?說實際上有一個錯誤。 – 2012-03-05 23:49:48

+0

這是因爲他在他的代碼中有一個左括號,其他問題 – 2012-03-05 23:55:45

+0

唉,我剛剛看到我發佈後。值更改爲是,但是當我取消選中時,該值仍然保持相同......奇怪。有什麼建議麼? – 2012-03-06 00:06:34