2016-11-16 12 views
2

私はチェックボックスにreadonlyプロパティを入れようとしましたが、ユーザがフィールドをチェック/チェック解除できるようにしています。無効にするとチェックボックスの値を投稿する方法

後で、ユーザーがチェックしたり無効にすることを妨げているディスエーブルを入れようとしました。

フォームを送信しようとしたときに、値が妥当でないチェックボックスが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); 
     } 
    } 

どのように私はそれがフォームポストで無効になっている場合でも、チェックボックスの値を送信することができます。

使用は、チェックボックスの状態を変更することはできませんので、あなたは、このように使用することができますし、あなただけの onclick="return false;"

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

そして、あなたのかみそりの構文でを追加することで、同様のチェックボックスから値を取得することができます

答えて

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

あなたは既に隠された入力をした

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