javascript - 使用没有ajax的javascript调用C#代码隐藏方法

标签 javascript c# jquery asp.net ajax

我的 asp.net 文件中有 2 个按钮

<asp:Button ID="BTN_Send_LA" runat="server" Text="Save" OnClientClick="ConfirmSendData()"></asp:Button>
//The button the client will click

<asp:Button ID="UploadButton" runat="server" Text="" OnClick="BTN_Send_LA_Click"/>
//Dummy Button for the JS .click()

这是我的 Js 部分:

function ConfirmSendData() {
    var r = confirm("Êtes vous bien: " + document.getElementById("<%=DDL_LaveurLA.ClientID%>").options[document.getElementById("<%=DDL_LaveurLA.ClientID%>").selectedIndex].text + " sinon veuillez changer dans le champ spécifié 'Laveur'");

    if (r == true) {

        var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
        clickButton.click();

        //$('UploadButton').trigger('click'); TEST 1
        //__doPostBack not working aswell

    }
}

所以这里是我期望完成的:

  1. 客户端点击第一个按钮(触发 JS)=> 有效
  2. R 为真 => 有效
  3. JS 部分触发了 UploadButton 的 Onclick => 不起作用

我不明白为什么这种方法不起作用,因为它似乎是大多数其他答案在 StackOverflow 上采用的一般方法?

更新:

好的,我已经尝试了下面提出的所有解决方案,但现在我遇到了奇怪的问题:

当我点击客户端按钮时,以下 3 件事情中的一件随机发生(路由跟随调试器)

1:按钮点击执行空白回发(IsPostBack == true) 事件 OnClick="BTN_Send_LA_Click"未触发

2:按钮点击执行空白回发(IsPostBack == false) 事件 OnClick="BTN_Send_LA_Click"未触发

3: 按钮正确触发虚拟按钮的 OnClick="BTN_Send_LA_Click"事件。

我不明白为什么。当我直接点击虚拟按钮时,一切正常

每次我执行 CTRL+F5 时,我第一次单击客户端按钮时将 100% 起作用(事件已触发)

其他:在我的事件 BTN_Send_LA_Click() 中,我更改了多个控件的背景颜色(浅绿色)

1: 如果我点击虚拟按钮 => 控件的背景颜色会改变

2:如果我点击客户端按钮,即使触发了 BTN_Send_LA_Click(),背景颜色也不会改变。

为什么?我完全迷失了这一点

更新代码:

        function ConfirmSendData()
     {
            /*
            var dd = document.getElementById("<%=DDL_LaveurLA.ClientID%>");
            var txt = dd.options[dd.selectedIndex].text;
            var r = confirm("Êtes vous bien: " + txt + " sinon veuillez changer dans le champ spécifié 'Laveur'"); */

            var r = confirm("Êtes vous bien: " + document.getElementById("<%=DDL_LaveurLA.ClientID%>").options[document.getElementById("<%=DDL_LaveurLA.ClientID%>").selectedIndex].text + " sinon veuillez changer dans le champ spécifié 'Laveur'");

            if (r == true) {
                //$("#<%=UploadButton.ClientID%>").click();

                var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
                clickButton.click();

            }
            return false;  
    }

最佳答案

除了:

  1. 您的 if 语句需要结束
  2. ConfirmSendData() 需要返回 false 以防止第一个按钮提交。

function ConfirmSendData() {
    var r = confirm("Êtes vous bien...");
    if (r == true) {
        var clickButton = document.getElementById("<%= UploadButton.ClientID %>");
        clickButton.click();
    }
    return false;
}

关于javascript - 使用没有ajax的javascript调用C#代码隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327721/

相关文章:

c# - ListView 列是否有可显示的最大长度?

c# - 如果我的对象从未构造过,为什么要调用 Dispose?

javascript - 当涉及下拉依赖时,JavaScript 中的表单验证

当鼠标悬停在一个列表元素上时,jQuery 使其他列表元素淡入淡出/变暗,我在那里 90%..?

javascript - React router 1.0.0-beta3 无法正常工作

javascript - JS中使用OOP的几种格式

c# - 正确使用异步和等待

javascript - JQuery 组合属性选择器

javascript - 如何从我的 d3 视觉对象中删除格陵兰岛

javascript - Browserify - 如何使我的模块可以访问变量?