2012-03-27 186 views
1

我有一個可以選擇或取消選中一些複選框的視圖。我希望始終在複選框中註冊任何更改,而無需使用提交按鈕(用戶可能會忘記執行此操作,並且會浪費時間)。提交複選框狀態沒有提交按鈕

那麼,有沒有辦法處理這個視圖內?到目前爲止,我只使用控制器來完成這項工作。

所以,一段代碼:

@ModelType MvcApplication.OpportuniteDetails 

    @Code 
     ViewData("Title")="Details" 
    @End Code 

    <script type="text/javascript"> 
    $(function() { 
    $(':checkbox').change(function() { 
     $.ajax({ 
      url: '@Url.Action("update")', 
      type: 'POST', 
      data: { isChecked: $(this).is(':checked') }, 
      success: function (result) { } 
     }); 
    }); 
    }); 
    </script> 
    [... Some code here...] 
    @Html.Raw("Mail sent?") @Html.CheckBox(Model.Opportunite.Mail) 

    <input type="checkbox" name="mail" id="mail" onclick="test()" /> 

回答

3

你可以使用AJAX:

$(function() { 
    $(':checkbox').change(function() { 
     var form = $(this).closest('form'); 
     $.ajax({ 
      url: form.attr('action'), 
      type: form.attr('method'), 
      data: form.serialize(), 
      success: function(result) { 

      } 
     }); 
    }); 
}); 

在這個例子中,我們訂閱每個複選框的更改事件。當這個事件被激怒時,我們查找包含的表單並使用AJAX請求將其內容發送到服務器。

如果你只是想在當前複選框狀態提交到服務器,而不是整個表格:

$(function() { 
    $(':checkbox').change(function() { 
     $.ajax({ 
      url: '@Url.Action("SomeAction")', 
      type: 'POST', 
      data: { isChecked: $(this).is(':checked') }, 
      success: function(result) { 

      } 
     }); 
    }); 
}); 

在那裏你可以有一個控制器動作,將做必要的處理:

[HttpPost] 
public ActionResult SomeAction(bool isChecked) 
{ 
    ... 
} 
+0

Thx很多,我會在閱讀了關於AJAX的howto之後檢查一下,以瞭解我做了什麼。所以,我一定會明天回答 – 2012-03-27 14:50:22

+0

我編輯了我的問題。我讀過一些關於javascript/ajax的內容。像我這樣應用你的代碼是不夠的。我沒有進入我創建的控制器 – 2012-03-28 10:08:32

+0

通過發出提示,我已經看到代碼在「change(function){...}」中運行,但不在「$ .ajax({.. })」。這段代碼應該做什麼?你能給我關鍵詞來幫助我找到關於它的信息。 – 2012-03-28 10:36:52

1

如果你不需要或不想要AJAX,只是想提交表單,這

$(':checkbox').change(function() { 
    var form = $(this).closest('form'); 
    form.get(0).submit(); 
}); 

會做到這一點。