Javascript 是否使用敲除绑定禁用select2下拉列表?
我有一个MVC Razor项目,在我看来,我有一个Javascript 是否使用敲除绑定禁用select2下拉列表?,javascript,jquery,asp.net-mvc,razor,knockout.js,Javascript,Jquery,Asp.net Mvc,Razor,Knockout.js,我有一个MVC Razor项目,在我看来,我有一个Html.TextBoxFor和data bind=“disable:setRoot”。此输入由Select2 jquery插件使用。 我的问题是禁用绑定无法正常工作。 这是我的代码: <div class="control-label">Category</div> <div class="input-group"> &l
Html.TextBoxFor
和data bind=“disable:setRoot”
。此输入
由Select2 jquery插件使用。
我的问题是禁用
绑定无法正常工作。
这是我的代码:
<div class="control-label">Category</div>
<div class="input-group">
<div class="input-group-addon"><label><input data-bind="checked: setRoot" type="checkbox"> root</label>
</div>
@Html.TextBoxFor(m => m.Create.IdCategory, new { id = "QuickSearchMainCategory", data_bind = "disable: setRoot, value: model.Create.IdCategory", @class = "form-control" })
</div>
如果我检查html,则禁用将起作用,但不会对整个select2元素起作用,而只对id为QuickSearchMainCategory
的输入起作用。
我需要做什么?Select2不能使用“已禁用”绑定,因为您必须明确地告诉Select2使用其内置功能禁用自身 您必须使用此功能来禁用/启用它:
$('#QuickSearchMainCategory').select2('disable');
$('#QuickSearchMainCategory').select2('enable');
您必须在ko viewmodel中执行此操作,因为仅设置disabled HTML属性是不够的。禁用时,选择2该值不会发送到mvc post。如何做到这一点?禁用了CSS样式的表单字段和表单字段:HttpPost永远不会发送任何字段。只需启用该字段或在表单中使用隐藏的输入即可。我发现了如何做到这一点,“Disabled”或“enable”=false,所有这些都会使MVC忽略该值。但我使用了.select2('readonly',true),这使得该字段在屏幕上被禁用,但MVC收到了该值!!
$('#QuickSearchMainCategory').select2('disable');
$('#QuickSearchMainCategory').select2('enable');