2013-08-18 77 views
1

我正面臨着一個我無法弄清楚的奇怪錯誤。我有一個提交了一組2個單選按鈕1名男等女像這樣的形式:單選按鈕在提交後返回相同的值

<label class="radio"> 
    <input type="radio" name="gender" id="femaleRadio" value="f"> 
    Vrouw 
</label> 
<label class="radio"> 
    <input type="radio" name="gender" id="maleRadio" value="m"> 
    Man 
</label> 

通過jQuery的AJAX我將它發送到PHP ...但是當我echo後它總是顯示,男性選擇。即使我選擇了女性。爲什麼是這樣?

$gender = strip_tags(trim($_POST['gender'])); 
echo $gender; exit; 

我總是M.如果我刪除HTML中的男性的選擇,我得到F.這必須有一個簡單的解決方案,但我不能找到它。

這裏是一段JavaScript代碼在那裏我得到表單中的所有數據

var el = $(this), 

url = el.attr('action'), 
type = el.attr('method'), 

data = {} 

// The loop to get al form data 
el.find('[name]').each(function(index, value) { 

    var el = $(this) 
    name = el.attr('name'), 
    value = el.val(); 

    //make data object 
    data[name] = value; 

}); 

在單選按鈕上的驗證提交

//Do some client side validation first 
if (!$("#femaleRadio").prop("checked") && !$("#maleRadio").prop("checked")) { 

    //Check if radio button is selected 
    $('#regError').html("<strong>Fout: </strong> Selecteer een geslacht"); 
    $('#regError').fadeIn(); 
    return false; 
} 
+3

後Ajax代碼 – Songo

+0

作爲@Songo指出,你必須張貼您的AJAX代碼。我用給定的代碼重新創建了你的項目,它工作正常(根據我選擇的返回f或m)。 –

+0

我添加了一塊收集數據...在這之後,我只是做一個ajax調用發送數據變量... – r2get

回答

3

在這一點,我們需要知道如何單選按鈕的作品。

在單個組中的所有單選按鈕將共享相同的名稱。

在你的情況 - gender

所以,當我們選擇任意一個選項,並提交表單,則只有選定的單選按鈕的值存儲在gender

但是按照你寫的的JavaScript/jQuery代碼,你只是考慮每個元素的值,並把它作爲它的名字的價值。

在這種情況下,你不檢查任何單選按鈕是否被選中與否。

你可以試試下面的代碼

data['gender'] = $('[name=gender]:checked').val(); 

如果沒有選擇 - 在gender屬性將是不確定的。

您可以根據需要更改此邏輯。

從它似乎是代碼,你迭代所有可用的字段名。在這種情況下,您可以更新,像這樣

// The loop to get al form data 
el.find('[name]').each(function(index, value) { 

    var el = $(this) 
    name = el.attr('name'), 
    value = el.val(); 

    //make data object 
    data[name] = value; 

    //If this element is a radio button 
    if($(this).is(':radio')) { 
     data[name] = $('[name=' + name + ']:checked').val(); 
    } 

}); 
+0

以及我有一個檢查,檢查是否檢查(添加在代碼中)。那不是問題艱難。問題是我循環槽名稱屬性..並將每個值添加到數據。但現在它會一直髮送M和F變量到PHP,所以我不知道這個值是否被檢查...我該如何解決這個問題? – r2get

+0

對不起,不明白第一個代碼,,,謝謝你修復它:D – r2get

相關問題