Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的点击事件对脚本中的按钮不起作用?_Javascript_Jquery_Microsoft Edge - Fatal编程技术网

Javascript 为什么我的点击事件对脚本中的按钮不起作用?

Javascript 为什么我的点击事件对脚本中的按钮不起作用?,javascript,jquery,microsoft-edge,Javascript,Jquery,Microsoft Edge,我启用了一个按钮事件&在dropdownlist值更改时调用。它在Edge上不工作,但在其他浏览器上工作完全正常。 按钮不起任何作用,单击时不会发生任何事情。我调试过了,控件在那里,甚至两次,但事件仍然没有触发。 任何帮助都将不胜感激 html- @Html.EditorFor(x => x.PensionPayrollSchemeDesc, new { TabIndex = 1, id = "pension-payroll-schemes-list" }) $("#pension-pa

我启用了一个按钮事件&在dropdownlist值更改时调用。它在Edge上不工作,但在其他浏览器上工作完全正常。 按钮不起任何作用,单击时不会发生任何事情。我调试过了,控件在那里,甚至两次,但事件仍然没有触发。 任何帮助都将不胜感激

html-

@Html.EditorFor(x => x.PensionPayrollSchemeDesc, new { TabIndex = 1, id = "pension-payroll-schemes-list" })

$("#pension-payroll-schemes-list").on(
        "change",
        {
            url: "SelectedSchemeProcessingButtons",
            model: decodes
        },
        onSchemeSelection);


// Event handler for changing the selected scheme
function onSchemeSelection(evt) {
    resetMessages(true);
    setProcessButtons(evt.data.url, false);  
}

// Using the selected scheme, check the current status and set the buttons accordingly    
function setProcessButtons(actionUrl, refresh) {
        let scheme = $("#pension-payroll-schemes-list").val();
        if (scheme === '') {
            setFileNetCaseRefState();
            return;
        }

        let selection = $("#PensionPayrollSchemeNumber").val();
        if (selection && selection > 0) {
            $('#processingModal').foundation('open');
            setFileNetCaseRefState(selection);
            let suppressInfoMessage = refresh;
            return $.ajax({
                url: actionUrl,
                data: antiforgeryModule.addAntiForgeryToken({ payrollSchemeNumber: selection, suppressInfoMessage: suppressInfoMessage }),
                type: 'POST',
                error: function (xhr, status, error) {
                    $('#processingModal').foundation('close');
                    errorHandling.displayError(xhr, status, error, 'globalFormError');
                    errorHandling.clearSuccess('globalFormSuccess');
                },
                success: function (response) {
                    $('#processingModal').foundation('close');
                    if (response) {
                        $('#actionButtons').html(response);
                    }
                    setActions();
                }
            });
        }
}


// bind an action to the specified button click event
function setAction(id, action, closeModal) {
    let button = $("#" + id);
    button.off("click").on("click", action, processAction);
}

// Set the process button actions
function setActions() {
    setAction("doYearEnd", {
        url: YearEndJobAction,
        override: false,
        model: decodes,
        closeModal: false,
        next: function () {
            displaySuccess(YearEndSubmittedMessage);
        }
    });
}


// Using the selected scheme, check the current status and set the buttons accordingly    
function setProcessButtons(actionUrl, refresh) {
        let scheme = $("#pension-payroll-schemes-list").val();
        if (scheme === '') {
            setFileNetCaseRefState();
            return;
        }

        let selection = $("#PensionPayrollSchemeNumber").val();
        if (selection && selection > 0) {
            return $.ajax({
                url: actionUrl,
                data: antiforgeryModule.addAntiForgeryToken({ payrollSchemeNumber: selection }),
                type: 'POST',
                error: function (xhr, status, error) {
                    errorHandling.displayError(xhr, status, error, 'globalFormError');
                    errorHandling.clearSuccess('globalFormSuccess');
                },
                success: function (response) {
                    if (response) {
                        $('#actionButtons').html(response);
                    }
                    setActions();
                }
            });
        }
}
@EditorFor(x=>x.PensionPayrollSchemeDesc,新{TabIndex=1, id=“养老金工资计划列表”})

请尝试使用F12开发工具检查Html元素和自定义属性。从上面的代码可以看出,如果使用F12开发人员工具检查HTML元素,似乎需要添加一些自定义属性(TabIndex和id),结果如下:

@Html.EditorFor(model => model.PensionPayrollSchemeDesc, new { htmlAttributes = new { @class = "form-control", id = "pension-payroll-schemes-list", TabIndex = 1 } })

我们可以看到id属性是“PensionPayrollSchemeDesc”,而不是“PensionPayrollSchemesList”。因此,更改事件不起作用

尝试按以下方式修改代码:

@Html.EditorFor(model => model.PensionPayrollSchemeDesc, new { htmlAttributes = new { @class = "form-control", id = "pension-payroll-schemes-list", TabIndex = 1 } })
渲染后,结果如下所示:

@Html.EditorFor(model => model.PensionPayrollSchemeDesc, new { htmlAttributes = new { @class = "form-control", id = "pension-payroll-schemes-list", TabIndex = 1 } })


最后,根据id属性在其上附加更改事件。

我们如何重现您的问题?如果无法重现问题,能否发布足够的代码(包括html元素和相关脚本)重现问题,如中所示。我添加了更多代码,请参阅@clonedI添加了更多代码,请参阅@zhi lv msft什么是
@Html.EditorFor
,以及
新的{TabIndex=1,id=“养老金工资方案列表”}
是什么类型的语法?在我看来,这不像是有效的Javascript语法。这个问题只出现在edge中,同样的代码在IE11中运行良好。另外,这是供您参考的DOM,ID对我来说似乎没问题-尝试在setProcessButtons函数、setAction函数和setActions函数中设置调试器,然后使用F12开发人员调试器工具一步一步地调试脚本,确保执行这些函数。您还可以使用控制台工具来检查是否有错误?此外,请尝试清除边缘浏览器数据(缓存、历史记录),然后重新测试。根据您的代码,我创建了一个示例(代码中,我删除了一些重复的函数(例如:setProcessButtons)以及未定义的变量和模式),它在我这边运行良好,请检查它。