jQuery:启用按钮单击事件的复选框(带标签)

时间:2015-03-02 13:38:50

标签: jquery html asp.net css3 asp.net-mvc-4

我为复选框视图模型编写了一个编辑器模板,在渲染时执行以下代码:

@Html.LabelFor(x => x.Checked, Model.Label, new Dictionary<string, object> { { "for", Model.Name } })
@Html.CheckBoxFor(x => x.Checked, true, new Dictionary<string, object> { { "id", Model.Name }, { "name", Model.Name }, { "class", "custom" } })

编写了Helper类方法,

public static MvcHtmlString CheckBoxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression, bool isReadonly, IDictionary<string, object> htmlAttributes)

在加载时禁用带有标签的复选框。

enter image description here

并有按钮点击事件

   $(document).on('OnNewButtonClick', function (e) {
        alert("Entry");
        $("input:checkbox").removeAttr('disabled');
        $("input:text,textarea").removeAttr("readonly");
        $("input:text, input:radio, input:checkbox,textarea").css('background-color', 'transparent');
        $("input:checkbox").prop('disabled',false);
        alert("Exit");
    });

但它没有启用带标签的复选框,单选按钮存在同样的问题吗?

我尝试了每个选项以启用按钮单击。我正在使用ASP.Net MVC4,Html5,CSS3,jQuery移动应用程序。 浏览器使用:IE,Firefox。

嗨,你能否提出一些其他的方法,因为你最终回答的是我这样做,

 <script type="text/javascript">
    $(document).ready(function () {
        $(document).on("click", "#Newbutton", function (e) {
            $(this).trigger('OnNewButtonClick');
        });
    });
</script>           

2 个答案:

答案 0 :(得分:1)

为什么你不这样使用

$(document).ready(
      $("#ButtonSelector").on('click',function(){
        alert("Entry");
        $("input:checkbox").removeAttr('disabled');
        $("input:text,textarea").removeAttr("readonly");
        $("input:text, input:radio, input:checkbox,textarea").css('background-color', 'transparent');
        $("input:checkbox").prop('disabled',false);
        alert("Exit");
    });
);

答案 1 :(得分:0)

谢谢你们的支持和帮助,如果我错了或者还有其他最佳解决方案,请回答我的问题。

似乎加载了Html控件,一旦它们在内部应用CSS和许多其他东西,如事件绑定,类名,div元素等。

所以在加载后启用/禁用这些额外的东西是不可能的,因为它没有找到元素之间的交互方式。它的类名如&#39; ui-checkbox ui-state-禁用&#39;它被用于很多地方,如函数,事件,它是html源代码中的一种硬编码值。

如果我们对某些点击事件进行状态更改,则会删除复选框的状态,但不会删除样式的状态,因此请注意与样式表关联的属性/属性。

我做了什么,而不是在'htmlAttributes&#39;&#39; htmlAttributes&#39;我在这个方法中做的辅助方法的参数,

public static MvcHtmlString CheckBoxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression, bool isReadonly, IDictionary<string, object> htmlAttribute{
    ...
    htmlAttributes["disabled"] = isReadonly;
    return htmlHelper.CheckBoxFor(expression, htmlAttributes);
    }

我在脚本中呈现/准备文档后添加了属性,如下所示,

<script type="text/javascript">
    $(document).ready(function () {
        alert('ready in partial');
        $("input:text, input:radio, input:checkbox,textarea").prop("readonly", true);
        $("input:radio, input:checkbox").prop('disabled', true);
        $("input:text, input:radio, input:checkbox,textarea").css('background-color', '#DEDEDE');
    });

在条件事件上提供正确的事件处理和启用/禁用checkbox / radionbutton,例如点击按钮。