2016-11-16 48 views
2

我試圖將複選框的只讀屬性,但它允許用戶選中/取消選中該字段。如何在禁用時發佈複選框值

後來我試圖把禁用,防止用戶檢查/取消選中。

但是,當我試圖提交表單,與disbaled值的複選框沒有傳遞給MVC控制器。

我試圖把隱藏的值,並試圖設置值時更改但無法將值傳遞給控制器​​。

這裏是我的代碼:

<div style="width:200px">@Html.CheckBoxFor(m => m.In, new { id = "cbIn", style = "vertical-align:middle;", data_bind = "checked:In,disable:useSettings" })</div> 
    @Html.HiddenFor(m=>m.In,new { id = "hiddenIn" }) 

jQuery代碼:

$("#hiddenIn").val(data.In); 

function SaveSettings() { 
     try { 

      var saveSettingsUrl = "/Settings/SaveSettings"; 
      var serializedForm = $("input,select").serialize(); 

      $.ajax({ 
       type: 'POST', 
       url: saveSettingsUrl, 
       async: true, 
       data: serializedForm, 
       success: function (data, textStatus, request) { 

        data = null; 

       }, 
       error: function (request, status, error) { 
        handleException(request.responseText); 
       } 
      }); 
     } 
     catch (error) { 
      showExceptionWindow('Jquery Error:' + error); 
     } 
    } 

如何發送的複選框值,即使它在形式上崗位被禁用。

回答

2

你已經已經隱藏的輸入:

@Html.HiddenFor(m=>m.In,new { id = "hiddenIn" }) 

這應該通過禁用複選框的值。


解決方案,而隱藏的輸入,你可以從形式獲取元素的值之前刪除disabled屬性:

$("input:checkbox").prop('disabled', false); 
//Then get the data 
var serializedForm = $("input,select").serialize(); 

希望這有助於。

1

您可以使用這樣的,所以使用不能改變複選框的狀態,您可以只需添加onclick="return false;"

<input type="checkbox" checked onclick="return false;" onkeydown="return false;"/>

而且在你的剃鬚刀語法得到複選框值以及將

@Html.CheckBoxFor(m => m.In, new { id = "cbIn", style = "vertical-align:middle;", data_bind = "checked:In,disable:useSettings", onclick="return false;"}) 
相關問題