2015-11-27 82 views
0

我有這個問題:我創建了反饋表單(表單是問題,然後結果(單選按鈕從1到5)和評論),這個反饋有很多問題,它們從數據庫表問題中加載。我想動態設置,當用戶給出的結果小於3時,這個問題的評論就成爲必需。另一方面,用戶在給出結果時不要求標記3​​這個問題的評論。用jQuery在asp.net mvc剃鬚刀中設置需要的項目

這是我的反饋表:

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
    @foreach (var item in Model) 
    { 
    <div class="form-group" style="text-align:center;"> 
     <h2> @Html.Label(item.questions.question) </h2> 
     <div class="col-md-10"> 
      <label class="radio-inline">@Html.RadioButton(item.question_id.ToString(), 1) 1 </label> 
      <label class="radio-inline">@Html.RadioButton(item.question_id.ToString(), 2) 2 </label> 
      <label class="radio-inline">@Html.RadioButton(item.question_id.ToString(), 3) 3 </label> 
      <label class="radio-inline">@Html.RadioButton(item.question_id.ToString(), 4) 4 </label> 
      <label class="radio-inline">@Html.RadioButton(item.question_id.ToString(), 5) 5 </label> 
     </div> 
     <div class="col col-md-10"> 
      <label>comment: @Html.TextArea(item.question_id.ToString() + "_comment", new { @class = "form-control", @cols = 200, @rows=5 }) </label> 
     </div> 
    </div> 
    <hr> 
    } 
    <input type="hidden" name="feedback_id" value="@ViewBag.feedback_id"> 
    <div class="form-group"> 
     <div class="col-md-12" style="margin-left:330px;"> 
      <input type="submit" value="Send" class="btn btn-primary btn-block" /> 
     </div> 
    </div> 
    </div> 
} 
+0

已經接受了一個答案,但是,當您使用MVC時,我建議使用自定義的'Attribute'。這裏有一個類似於你需要的東西:http://stackoverflow.com/a/26919872/2181514 –

+0

考慮使用[foolproof](http://foolproof.codeplex.com/)'[RequiredIf]'或類似的驗證屬性所以你得到客戶端和服務器端驗證 - 參考[這個例子](http://stackoverflow.com/questions/33910818/mvc-foolproof-validation-cannot-read-property-value-of-undefined/33912375#33912375) –

回答

0

嘗試像下面的代碼片段。希望這會幫助你。

$('.radio-inline > input').change(function() { 
    var val = $(this).val(); 
    var comment = $(this).closest('.form-group').find('textarea.form-control'); 
    if (val < 3) { 
     comment.attr('required', 'required'); 
    } 
    else { 
     comment.removeAttr('required'); 
    } 
}); 
0

我假設你想要的是一個客戶端驗證:

$('.radio-inline').change(function() { 
    var commentQuestionName = $(this).attr('name') + '_comment'; 
    if ($(this).val() < 3) { 
     $('input[name="' + commentQuestioName + '"]').show(); 
    } 
    else { 
     $('input[name="' + commentQuestioName + '"]').hidden(); 
    } 
});