2015-06-19 45 views
-1

有一個具有複選框的編輯表單。如果複選框被選中,它使用腳本發送一個是/否值到hiddenfor(可變javascript如何查看剃刀變量?並設置複選框?

<div class="form-group"> 
@Html.LabelFor(model => model.PTModel1, htmlAttributes: new { @class =  "control-label col-md-2" }) 
<div class="col-md-10"> 
    <div class="checkbox"> 
     @Html.CheckBox("checkbox") 
     @Html.HiddenFor(model => model.PTModel1, new { htmlAttributes = new { @class = "form-control" } }) 
    </div> 
</div> 

腳本代碼:

$("#checkbox1").on("click", function() { 
       var myCheckbox1 = $("#checkbox1"); 
       if (myCheckbox1.is(":checked")) { 
        $("#PTModel1").val("Yes"); 
       } 
       else { 
        $("#PTModel1").val("No"); 
       } 
      }); 

確定的創建和編輯方法mvc bootstrap可以和一些腳本一起工作,並添加yes/no;但是當執行Edit時會出現問題,如果值被選中並且IS已經設置爲Yes,它總是默認爲no,並且複選框不檢查。如果檢查複選框,如果值現在在f ORM PTModel1變量是「是」?

<script> 
    $(window).load(function() { 

     switch (("#PTModel1").val) { 

      case "Yes": $("#checkbox1").checked; 
       alert("in switch case"); 
       break; 
      default: alert("in switch case default" + "#PTModel1"); 
    } 
}); 
</script> 

問題:如果設置複選框,如果變量的值是「是」?語法沒有做我期望的。

第二個問題:有一次,我保存了一個複選框的小圖標圖像,所以在索引視圖中它會顯示圖標。無論如何保存並顯示狀態。複選框必須反映複選框

回答

3

的checkedness看到錯誤高亮顯示在下面的代碼:

$(window).load(function() { 

    switch ($("#PTModel1").val()) { 
     //^    ^^ 

     case "Yes": 
      $("#checkbox1").prop('checked', true); 
      //    ^^^^^^^^^^^^^^^^^^^^^ 
      alert("in switch case"); 
      break; 
     default: 
      alert("in switch case default" + "#PTModel1"); 
    } 
}); 

OR

較短的版本:事件的

$(window).load(function() { 
    $('#checkbox1').prop('checked', $('#PTModel1').val() == 'Yes'); 
}); 

較短的版本Handler

$("#checkbox1").on("click", function() { 
    $('#PTModel1').val($(this).is(':checked') ? 'Yes' : 'No'); 
}); 
+0

非常感謝!我很驚訝js會如何推斷,如果沒有明確聲明它,這是js聲明的本質嗎?暗示是否?它完美地工作。 – rogersb

+0

@MaxPower這是'三元操作符'。閱讀https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Conditional_Operator – Tushar

+0

再次感謝該參考,非常有幫助。但是在加載函數中,沒有,如果沒有?點擊函數的三元語法來自C語法;但第一個就在那裏,隱含1/2三元?這是:聲明,結果是否爲真; – rogersb