4

我尝试使用第二个按钮激活我的第一个按钮单击/命令,以激活我的登录命令和组验证

我究竟做错了什么?

第一个按钮

<asp:Button ID="LoginButtonInvis" runat="server"  CommandName="Login"
           ValidationGroup="Login1"
                visible ="false"/>
                </asp:Button>

第二个按钮

          <button name="submit" runat="server"onclick="document.getElementById('LoginButtonInvis').Click();">                
                <i class="icon-arrow-right icon-large"></i>
            </Button>

我得到的错误:

Microsoft JScript runtime error: Unable to get value of the property 'Click': object is null or undefined

4

4 回答 4

2

默认情况下,ASP.NET 将父 ID 附加到控件以维护元素的唯一 ID。这是正确的行为。

此外,JavaScript 区分大小写。事件都以小写字母开头。有些浏览器有.click(),有些浏览器有,.onclick()所以下面的代码是我能提供的最好的代码,而无需更改代码的其他部分:

onclick="var b = document.getElementById('<%=LoginButtonInvis.ClientID%>'); if (b.click) b.click(); else if (b.onclick) b.onclick();"

还要确保第二个按钮不是提交按钮,type="button"否则会导致表单提交两次。

编辑:这仅在文档中存在第一个按钮时才有效。使用您当前的代码,由于Visible="false"您拥有,它不存在。要在仍然隐藏的同时发送它,请删除并将其Visible="false"添加到您的代码后面:

LoginButtonInvis.Style["display"] = "none";

或者使用“display: none;”应用 CSS 类 规则。

为了避免使用内联 JavaScript,以及更好的跨浏览器支持(IE,是的),您最好在页面中添加 JavaScript 块:(无论在哪里)

<script type="text/javascript">
function SimulateClick(buttonId) {
    var button = document.getElementById(buttonId);
    if (button) {
        if (button.click) {
            button.click();
        }
        else if (button.onclick) {
            button.onclick();
        }
        else {
            alert("DEBUG: button '" + buttonId + "' is not clickable");
        }
    } else {
        alert("DEBUG: button with ID '" + buttonId + "' does not exist");
    }
}
</script>

现在在第二个按钮中只有这个:

<button name="submit" onclick="SimulateClick('<%=LoginButtonInvis.ClientID%>');"><i class="icon-arrow-right icon-large"></i></button>

另请注意,您不需要runat="server"第二个按钮,它只会导致<%=无法工作并使事情复杂化。

于 2013-01-16T15:00:40.847 回答
0

尝试不同的方法

在提交按钮上单击调用 javascript 并设置隐藏变量字段

function SetValue()
{
    //set hidden field value 
    form.submit();
}

它将控制page_load事件。检查hidden field是否设置的值并执行相应的LoginButtonInvis命令。不要忘记重置隐藏字段

希望这可以帮助

于 2013-01-16T14:55:02.940 回答
0

我认为原始代码的唯一问题是点击方法应该都是小写的:

onclick="document.getElementById('LoginButtonInvis').click();

于 2014-01-10T10:19:58.803 回答
0

如果它是一个链接按钮,你可以这样做:__doPostBack('ctl00$CP1$lnkBuscarEmpleado', '')

我只是在检查我的按钮时发现了它。

https://i.stack.imgur.com/gXeg3.png

于 2019-02-26T01:13:19.490 回答