【问题标题】:Applying Kendo button K-state-disabled class removing functionality of button应用 Kendo 按钮 K-state-disabled 类删除按钮的功能
【发布时间】:2015-07-08 17:45:50
【问题描述】:
if(data[keyvar]==false)
{
 jQuery('#BtnsaveAjax').prop("disabled", false).removeClass("k-state-disabled");
}

执行此语句后,保存按钮上的函数不会被调用。我是否需要添加或删除更多类才能恢复该功能?

【问题讨论】:

  • 为您的问题添加更多详细信息,因此您获得帮助的机会不大。是否包含 jquery 库?
  • 是的,是的,我已经包含了所有内容.. 按钮也被禁用了.. 但它的点击事件没有被调用.. 这是按钮的代码.. @(Html.Kendo ().Button() .Name("BtnsaveAjax") .Content("Save - AJAX") .HtmlAttributes(new { style = "float:right", type = "button" }) .Events(ev => ev.点击("saveDetails")) ) @Miki
  • 为什么你首先添加k-state-disabled类,奇怪的是你删除了禁用,然后你添加了k-state-disabled类?我读过here k-state-disabled 将禁用按钮功能的触发
  • @machun 对不起..那是错误的..我现在编辑了..现在告诉我该怎么办?
  • @Rasika 我仍然试图掌握你想要做什么,我认为重点是你希望按钮能够再次触发点击功能。但是在此之前您会做什么使功能无法正常工作?

标签: button kendo-ui


【解决方案1】:

我想尝试回答你的问题,但首先我从你的问题中得到的是

我有一个网格.. 要编辑它我有一个弹出窗口.. 上面有 是两个按钮.. 编辑和保存.. 我有两种查看模式.. 编辑和 查看..在编辑模式下,保存按钮被禁用,在查看模式下保存 按钮被禁用..

所以现在当我在这里单击“按钮”时,我认为是指编辑按钮,然后我希望启用我的保存按钮。到目前为止,这就是我所拥有的,

  • 首先,当您单击查看详细信息时,您将看到保存按钮已禁用 启用编辑按钮时,

  • 那么当你点击编辑按钮时,保存按钮将被启用

DEMO

【讨论】:

    【解决方案2】:

    这就是我的弹出窗口的样子.. 所以现在当我点击我的编辑按钮时,我希望启用保存按钮.. 所以购买添加 k-State-disabled 我可以管理它.. 但是现在当我点击我的保存按钮..我在保存时添加的点击功能没有触发..

    这是我用于该弹出页面的代码.. 并且 Editable 是一个字典,其中包含特定剑道小部件的禁用值。

    @using Kendo.Mvc.UI;
    @using Newtonsoft.Json;
    @using SampleUIApp.Areas.AreaOne.Models;
    @using SampleUIApp.Common;
    @model SampleUIApp.Areas.AreaOne.Models.MemberModel
    <script type="text/javascript">
    
        $(document).ready(function ()
        {
            // For setting control mode
            // It is observed that Kendo Multiselect does not accept value through below code
            // change mode of multiselect like done below in the same view
            var Edit = @(Html.Raw(JsonConvert.SerializeObject((Dictionary<string, bool>)ViewBag.Editable)));
    
            for ( keyVar in Edit )
            {
                if (keyVar.search("Btn") != -1) {
                    jQuery('#' + keyVar).attr("disabled", Edit[keyVar]);
                } else {
                    jQuery('#' + keyVar).prop("readonly", Edit[keyVar]);
                }
    
    
            }
    
            var viewMode = @Html.Raw(Json.Encode(ViewBag.ViewMode));
            if(viewMode == 'ADD')
            {
                $("#LoanGrid1").remove();
            }
            var title = viewMode + ' MEMBER';
            setTitle(title);
        });
    
        function setViewMode(data) {
    
            //for ( keyVar in data ) {
    
            //    if (keyVar.search("Btn") != -1) {
    
            //        jQuery('#' + keyVar).attr("disabled", data[keyVar]);
            //    }
            //    else {
            //        jQuery('#' + keyVar).prop("readonly", data[keyVar]);
            //         }
    
            for ( keyVar in data ) {
    
                if (keyVar.search("Btn") != -1) {
                    if(data[keyVar]==true){
                        jQuery('#' + keyVar).prop("disabled", true).addClass("k-state-disabled");
                    }
                    else{
                        jQuery('#' + keyVar).prop("disabled", false).removeClass("k-state-disabled");
                    }
                }
                else {
                    jQuery('#' + keyVar).prop("readonly", data[keyVar]);
                }
            }
        }
    
    
        function onAdditionalData() {
            return {
                text: $("#CityName").val()
            };
        }
    
        function AccessModelDetails() {
            var data = @Html.Raw(Json.Encode(this.Model));
            alert(data.Remark);
        }
    
        function UpdateModelDetails() {
            //        var model = $('form').serialize();
            //        var data = Sys.Serialization.JavaScriptSerializer.deserialize(model);
            //        alert('model: ' + data.Remark);
    
            $("#Remark").val("Remark Updated");
        }
    
        function saveDetails() {
            alert('Calling : saveDetails');
            var model = $("form").serialize();
            Save(model); // Save Function is Written On Parent View
        }
    
        function Edit() {
    
            var mode = 2; // 2 For Edit
            var Fid = 0;
            var viewName = 'MemberEditor';
            var actionURL = '@Url.Action("setViewMode", "Member")';
    
            $.ajax({
    
                type: "POST",
                data: {
                    Mode: mode,
                    lFeatureId: Fid,
                    ViewName: viewName
                },
                url: actionURL,
                success: function (result) {
    
                    setViewMode(result);
    
    
                }
            });
        }
    
        // This Function will be called when an item is got selected from Multiselect Control
        // Used for Member role
        // here is a sample methos to get the selected item.
        function OnSelectMemberRole(e) {
            var dataItem = this.dataSource.view()[e.item.index()];
            alert("event :: select (" + dataItem.MemberRoleName + " : " + dataItem.MemberRoleId + ")");
        }
    
    </script>
    @using (Html.BeginForm())
    {
        <div class="editor">
            <div id="DIV_Line07" class="line">
                <div id="DIV_Buttons" class="col100" style="float: right">
                    @*
                        1.Below is the kendo button to call server side controller action by using MultiButton Attribute
                        2. Have to Set HtmlAttributes as follows
                            * name = Given Name With MutiButton Attribute
                            * type = "submit",
                            * value = Given Name With MutiButton Attribute
                        3. .Name(Given Name With MutiButton Attribute)
                        4. .Content("Caption Of Button")
    
                    *@
    
    
    
                        @(Html.Kendo().Button()
                            .Name("BtnEditAjax")
                            .Content("Edit - AJAX")                        
                            .HtmlAttributes(new { style = "float:right", type = "button" })
                            .Events(ev => ev.Click("Edit"))
    
                        )
    
    
                    @*  @(Html.Kendo().Button()
                        .Name("Btnsave")
                        .HtmlAttributes(new { style = "float:right", name = "Btnsave", type = "submit", value = "save" })
                            .Content("Save - Server")
                        )*@
                     @*
                        1.Below is the kendo button to call server side controller action by using Javascript Function With Ajax
                        2. Have to Set HtmlAttributes as follows
                            * type = "button",
                        3. .Name(Name Of The Button)
                        4. .Content("Caption Of Button")
                        5. Events(ev => ev.Click("Javascript Function Name"))
                     *@
    
                        @(Html.Kendo().Button()
                            .Name("BtnsaveAjax")
                            .Content("Save - AJAX")                    
                            .HtmlAttributes(new { style = "float:right", type = "button" })
    
                        )    
    
    
    
                        @(Html.Kendo().Button()
                            .Name("AccessModelinJS")
                            .Content("Access Model In JS")
                            .HtmlAttributes(new { style = "float:right", type = "button" })
                            .Events(ev => ev.Click("AccessModelDetails"))
                        )
    
    
                        @(Html.Kendo().Button()
                            .Name("UpdateModelinJS")
                            .Content("Update Model In JS")
                            .HtmlAttributes(new { style = "float:right", type = "button" })
                            .Events(ev => ev.Click("UpdateModelDetails"))
                        )
                    </div>
                </div>
    
                <div id="DIV_Line00" class="line">
                    <div id="DIV_Fname" class="col33">
                        @Html.HiddenFor(model => model.MemberId)
                        <label>
                            First Name - Upper Case
                        </label>
                        @*To make textbox uppercase set style's "text-transform" Attribute's value as "uppercase" in html HtmlAttributes*@
                        @(Html.Kendo().TextBoxFor(m => m.FirstName)
                            .Name("FirstName")
                            .HtmlAttributes(new { @class = "width100", style = " text-transform: uppercase" })
                        )
                    </div>
                    <div id="DIV_MName" class="col33">
                        <label>
                            Middle Name - Lower Case
                        </label>
                        @*To make textbox lowercase set style's "text-transform" Attribute's value as "lowercase" in html HtmlAttributes*@
                        @Html.Kendo().TextBoxFor(m => m.MiddleName).Name("MiddleName").HtmlAttributes(new { @class = "width100", style = " text-transform: lowercase" })
                    </div>
                    <div id="DIV_LName" class="col33">
                        <label>
                            Last Name - Alphabets Only
                        </label>
                        @*To make textbox AlphaOnly set pattern Attribute's value as "[A-Za-z\\s]*" in html HtmlAttributes*@
                        @Html.TextBoxFor(m => m.LastName, new { id = "LastName", @class = "width100 k-textbox", type = "text", pattern = "[A-Za-z\\s]*" })
                    </div>
                </div>
                <div id="DIV_Line01" class="line">
                    <div id="DIV_Height" class="col15">
                        <label>
                            DOB - Min & Max
                        </label>
                        @Html.ValidationMessageFor(model => model.DateOfBirth)
                        @(Html.Kendo().DatePickerFor(m => m.DateOfBirth)
                            .Min(new DateTime(1970, 01, 01))
                            .Max(new DateTime(2014, 11, 30))
                            .HtmlAttributes(new { @class = "width100" })
                            .Format("dd/MM/yyyy")
                        )
                    </div>
                    <div id="DIV_Membe  rName" class="col18">
                        <label>
                            Age - Integer
                        </label>
                        @Html.ValidationMessageFor(model => model.Age)
                        @Html.Kendo().IntegerTextBoxFor(m => m.Age).HtmlAttributes(new { @class = "width100" })
                    </div>
                    <div id="DIV_Age" class="col15">
                        <label>
                            Height-Decimal 3
                        </label>
                        @*Format as "#.000" specifies that 3 decimals will be displayed, Number of 0s in the format Specifies number of decimals*@
                        @Html.ValidationMessageFor(model => model.Height)
                        @Html.Kendo().NumericTextBoxFor(m => m.Height).HtmlAttributes(new { @class = "width100" }).Format("#.000")
                    </div>
                    <div id="DIV_Country" class="col18">
                        <label>
                            StateAutoComplete
                        </label>
                        @* 1.Name Of the autocomplete must be ur property name of the model so that it could bind selected value to model .
                            2.List for autocomplete will only contains value and does not support Id Value pair pattern(In Used Version of kendo).
                        *@
                        @(Html.Kendo().AutoCompleteFor(m => m.StateName)
                            .Name("StateName")
                            .DataTextField("StateName")
                            .BindTo((System.Collections.IEnumerable)ViewData["states"]).HtmlAttributes(new { @class = "width100" })
                        )
                    </div>
                    <div id="DIV_CityServer" class="col33">
                        <label>
                            City-AutoComplete Server Filtering
                        </label>
                        @* 1.Name Of the autocomplete must be ur property name of the model so that it could bind selected value to model .
                            2.List for autocomplete will only contains value and does not support Id Value pair pattern(In Used Version of kendo).
                        *@
                        @(Html.Kendo().AutoCompleteFor(m => m.CityName)
                            .Name("CityName")
                            .DataTextField("CityName")
                            .MinLength(3)
                            //.BindTo((System.Collections.IEnumerable)ViewData["cities"]).HtmlAttributes(new { @class = "width100" })
                            .DataSource(
                                source =>
                                {
                                    source.Read(read => { read.Action("GetCities", "Member").Data("onAdditionalData"); });
                                    source.ServerFiltering(true);
                                })
                            .HtmlAttributes(new { @class = "width100" })
                        )
                    </div>
                </div>
                <div id="DIV_Line02" class="line">
                    <div id="DIV_DateOfBirth" class="col33">
                        <label>
                            Member Type - DropDownList
                        </label>
                        @*
    
                            0.List can be bind to DropDownListFor using "BindTo" or using "DataSource".
                            1.Name Of the DropDownListFor must be ur property name of the model so that it could bind selected value to model .
                            2.List for DropDownListFor will contains Id Value pair .
                            3.Selected Value will be Value of DataValueField - ".DataValueField("MemberTypeId")"
                            4.Selected Value will bind to model property given as name to DropDownListFor
    
                        *@
                        @(Html.Kendo().DropDownListFor(m => m.MemberType)
                            .Name("MemberType")
                            .DataTextField("MemberTypeName")
                            .DataValueField("MemberTypeId")
                            .HtmlAttributes(new { @class = "width100" })
                            .Filter("contains")
                            .BindTo((System.Collections.IEnumerable)ViewData["memberTypes"])
                            //.DataSource(
                            //    source =>
                            //    {
                            //        source.Read(read => { read.Action("GetMemberTypes", "Member"); });
                            //    })
                        )
                    </div>
                    <div id="DIV_MemberRole" class="col33">
                        <label>
                            Member Role - MultiSelect
                        </label>
                        @*
    
                            0.List can be bind to MultiSelectFor using "BindTo" or using "DataSource".
                            2.List for MultiSelectFor will contains Id Value pair .
                            1.Name Of the MultiSelectFor must be ur property name of the model so that it could bind selected values to model.
                            2.Type of property Specified in Name of MultiSelectFor has to be a collection type for example List<long> or List<string>.
                            3.Selected Values will be Values of DataValueField - ".DataValueField("MemberRoleId")"
                            4.Selected Values will bind to model property given as name to MultiSelectFor
    
                        *@
                        @(Html.Kendo().MultiSelectFor(m => m)
                            .Name("MemberRoleList")
                            .DataTextField("MemberRoleName")
                            .DataValueField("MemberRoleId")
                            .BindTo((System.Collections.IEnumerable)ViewData["memberRoles"])
                            .Events(e => e.Select("OnSelectMemberRole"))
                            //.DataSource(
                            //    source =>
                            //    {
                            //        source.Read(read => { read.Action("GetMemberRoles", "Member"); });
                            //    })
                        )
                    </div>
                    <div id="DIV_Mobile" class="col33">
                        <label>
                            Mobile - Mobile Mask
                        </label>
                        @*
                            1. Specifying Mask As "0000000000" allows to enter only 10 Digits.
                        *@
                        @Html.ValidationMessageFor(model => model.Mobile)
                        @(Html.Kendo().MaskedTextBoxFor(m => m.Mobile)
                            .Mask("0000000000")
                            .HtmlAttributes(new { @class = "width100" })
                        )
                    </div>
                </div>
                <div id="DIV_Line03" class="line">
                    <div id="DIV_Email" class="col33">
                        <label>
                            Email - With Validation
                        </label>
                        @*
                            1. For Email Validation On UI, Use Html.TextBoxFor
                            2. Set Attributes as follows
                                * type = "email"
                                * @class = "k-textbox"
                                * style = " text-transform: lowercase"
                        *@
                        @Html.TextBoxFor(model => model.Email, new { @class = "k-textbox width100", type = "email", style = " text-transform: lowercase" })
                    </div>
                    <div id="DIV_PIN" class="col33">
                        <label>
                            PIN - Mask
                        </label>
                        @*
                            1. Specifying Mask As "000000" allows to enter only 6 Digits.
                        *@
                        @(Html.Kendo().MaskedTextBoxFor(m => m.PIN)
                            .Mask("000000")
                            .HtmlAttributes(new { @class = "width100" })
                        )
                    </div>
                    <div id="DIV_Phone" class="col33">
                        <label>
                            Phone - Mask
                        </label>
                        @*
                            1. Specifying Mask As "(999) 000-0000" allows to enter Digits within specified mask.
                        *@
                        @(Html.Kendo().MaskedTextBoxFor(m => m.Phone)
                            .Mask("(999) 000-0000")
                            .HtmlAttributes(new { @class = "width100" })
                        )
                    </div>
                    <div id="DIV_Line05" class="line">
                    </div>
                    <div id="DIV_Line06" class="line">
                        <div id="DIV_Remark" class="col100">
                            <label>
                                Remark - Text Area
                            </label>
                            @*
                                To Use Text Area us helper Html.TextAreaFor
                                2. Set Attributes as follows
                                    * @class = "k-textbox"
                                    * style = " text-transform: lowercase"
                                    * rows = as much U Want
                                    * cols = as much U Want
                            *@
                            @Html.TextAreaFor(m => m.Remark, new { @class = "k-textbox width100", rows = "2", cols = "50" })
                            @Html.HiddenFor(m => m.Remark, new { id = "Remark" })
                            @* <textarea class="k-textbox" rows="2" cols="50" >
                                </textarea>*@
                        </div>
                    </div>
                    <div id="DIV_Phone" class="col100">
                        <label>
                            Loan Details
                        </label>
                        @(Html.Kendo().Grid<LoanModel>()
                            .Name("LoanGrid1")
                            .Columns(columns =>
                            {
                                columns.Bound(m => m.LoanNumber).Filterable(false).Title("Loan Number").Width("20%").HtmlAttributes(new { @style = "font-size:x-small" });
                                columns.Bound(m => m.ROI).Filterable(false).Title("ROI").Width("10%").Format("{0:N2}").HtmlAttributes(new { @style = "font-size:x-small" });
                                columns.Bound(m => m.Period).Filterable(false).Title("Period").Width("10%").Format("{0:N2}").HtmlAttributes(new { @style = "font-size:x-small" });
                                columns.Bound(m => m.LoanAmount).Filterable(false).Title("Loan Amount").Width("10%").Format("{0:N2}").HtmlAttributes(new { @style = "font-size:x-small" });
                                columns.Bound(m => m.OtstngAmount).Filterable(false).Title("Outstanding amount").Width("10%").Format("{0:N2}").HtmlAttributes(new { @style = "font-size:x-small" });
                                columns.Command(cmd => cmd.Destroy());
                            })
                            .Pageable()
                            .Scrollable(config => config.Enabled(false))
                            .Filterable(config => config.Mode(GridFilterMode.Menu))
                            .Sortable()
                            .Resizable(config => { config.Columns(true); })
                            .Reorderable(config => { config.Columns(true); })
                            .DataSource(source => source
                                .Ajax()
                                .PageSize(5)
                                .Model(model =>
                                {
                                    model.Id(m => m.MemberId);
                                })
                                .Read(read => read.Action("FetchMemberLoanList", "Member", new { area = "AreaOne" }))
                                .Destroy(del => del.Action("Destroy", "Member", new { area = "AreaOne" }))
                            )
                        )
                    </div>
                </div>
            </div>
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多