【问题标题】:JQuery doesn't get form input valueJQuery 没有得到表单输入值
【发布时间】:2020-08-27 01:57:13
【问题描述】:

我有以下代码使用 ajax 调用控制器操作并使用 kendo 窗口呈现部分视图,但它没有获取表单元素。

在我看来,我使用了这个按钮

@(Html.Kendo().Button()
            .Name("textButton")
            .Content("Text button")
            .HtmlAttributes( new {type = "button"} )
            .Events(ev => ev.Click("onClick")))

和剑道窗口

@(Html.Kendo().Window().Name("ValidateAddress")
                .Title(@Localizer["Validate Address"].Value)
                .Visible(false)
                .Modal(true)
                .Draggable(true)
                .Width(500)
)

这里的 jQuery 看起来像

   $(document).ready(function () {
        function onClick(e) {                
            var getAddress = {                             
                AddressLine1: $('#AddressLine1').val(),
                AddressLine2: $('#AddressLine2').val(),
                City: $('#City').val()
            };
            var window = $("#ValidateAddress").data("kendoWindow");
            var PopUpTitle = "Validate Address ";
                window.setOptions({
                    title: PopUpTitle,
                    content: ""
                });

                window.refresh({
                    url: "/Address/Address/VerifyAddress",
                    type: "POST",
                    data: JSON.stringify(getAddress),
                    contentType: "application/json; charset=utf-8"
                });
                window.open();
                window.center();
        }

        $("#textButton").kendoButton({
            click: onClick
        });
    });

【问题讨论】:

  • 你能发布上面代码生成的html,即:按钮和窗口吗?
  • @Swati 完整地添加了你
  • 你检查$('#AddressLine1').val() ..etc这些是否有任何价值?该函数是否也被调用?发出警报,看看该函数是否被调用。
  • @Swati 我在function onClick(e) { 下添加了警报var at = $('#AddressLine1').val(); alert(at);,它返回正确的值
  • 很好,现在在浏览器中检查您的网络选项卡是否发出了 ajax 请求并且它是否成功。

标签: javascript jquery ajax kendo-ui kendo-grid


【解决方案1】:

看起来 Kendo 没有使用 id 属性,而是 asp-for。试试这个:

$(document).ready(function () {
    function onClick(e) {                
        var getAddress = {                             
            AddressLine1: $('[asp-for=AddressLine1]').val(),
            AddressLine2: $('[asp-for=AddressLine2]').val(),
            City: $('#City').val()
        };
        var window = $("[asp-for=ValidateAddress]").data("kendoWindow");
        var PopUpTitle = "Validate Address ";
        window.setOptions({
            title: PopUpTitle,
            content: ""
        });

        window.refresh({
            url: "/Address/Address/VerifyAddress",
            type: "POST",
            data: JSON.stringify(getAddress),
            contentType: "application/json; charset=utf-8"
        });
        window.open();
        window.center();
    }

    $("[asp-for=textButton]").kendoButton({
    click: onClick
    });
});

或者,也许,你可以尝试用这个“兼容”剑道

$(document).ready(function () {
    let adjustArray = $("[asp-for]:not([id])");
    adjustArray.each( index => {
        let el = $(adjustArray[index]);
        el.attr('id', el.attr('asp-for'));
    });
    function onClick(e) {                
        var getAddress = {    
            ... continuation of your code

【讨论】:

  • 谢谢,但它不喜欢它
  • 对不起,我误会了。你不喜欢这个答案?或者你不喜欢这个答案?如果您喜欢并工作过,请在您的问题中设置“已回答”:)
  • 如果您不喜欢,我很抱歉:(
  • 不,对不起,我试过了,但应用程序不喜欢 [asp-for],我并不是说我不喜欢你的解决方案对不起。我真的很感谢你的帮助,我还在尝试但仍然是空的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多