2010-09-23 54 views
0

一個文本框驗證紅寶石這是目前的設置,我有:單選按鈕,並具有on Rails的

<input id="demographics_questionary_gender_male" name="demographics_questionary[gender]" type="radio" value="Male"> Male 
<input id="demographics_questionary_gender_gender" name="demographics_questionary[gender]" type="radio" value="Female"> Female 
<input id="demographics_questionary_gender_male" name="demographics_questionary[gender]" type="radio" value="Other"> Other 
<input id="other_gender_value" name="other_gender[value]" size="30" type="text"> 

這將產生三個單選按鈕(男,女,其他)。如果選擇「其他」單選按鈕,還有一個文本框。

我的問題與如何驗證如果選中「其他」單選按鈕時填入文本框。

目前,我所做的是在控制器中檢查是否選中了另一個單選按鈕,如果是,那麼我會將存儲值更改爲在「其他」文本框中設置的值。但是,我真的不知道如何驗證文本框。我知道如何驗證是否通過驗證模型中是否設置了值來檢查單選按鈕,但不知道如何確保用戶將數據輸入到「其他」文本框中。

這裏的代碼來自控制器的片段:

if @demographics_questionary.gender == 'Other' 
    @other_gender = params[:other_gender] 
    if @other_gender[:value].nil? 
     @demographics_questionary.gender = @other_gender[:value] 
    else 
     @demographics_questionary.gender = 'Not Set' 
    end 
end 

正如你所看到的,我現在只是將其設置爲如果選擇了「其他」單選按鈕「未設置」和「其他」文本框是空的。但是,當選擇按鈕處理數據時,將執行此代碼。理想情況下,我希望驗證在查看頁面完成,在該頁面中,如果選擇了「其他」單選按鈕,則會阻止用戶前進,直到文本框被填充。這樣,當它甚至碰到控制器方法時,這個檢查就不需要了。

但我再次打開其他建議的方法。

我在想這可以完成JavaScript或jQuery,但我不知道如何。

噢,所以所有這些代碼在視圖中位於一個形式字段:

<% form_for(@demographics_questionary) do |f| %> 
    <%= f.error_messages :header_message => "Please do not skip any of the questions." %> 
    /* Code for radio buttons */ 
    <%= f.submit 'Next' %> 

<%end%> 

通知的單選按鈕代碼位於一個的form_for。一旦提交按鈕被觸發,它就會執行控制器中的方法。如果您要使用JavaScript/jQuery,您將如何將該函數追加到提交按鈕?

這是當前頁:

http://otoplusvn.com/TherapistSurvey/demographics_questionaries/new關於兩性問題2。

有什麼建議嗎?我很感激,感謝 德里克

回答

2

您可以添加相關性規則,這樣的事情:

$('#register_form').validate({rules: { 
    'other_gender[value]': { 
     required: { 
     depends: function(element) { 
      return $("input[name=demographics_questionary[gender]]:checked").val() == "Other" 
     } 
     } 
    } 
} }); 

這將需要的文本框中,只有選擇的選項是「其他」

相關問題