我正在尝试从JS代码触发按钮事件。但是JS函数doPostBack
中的reg()
并不指向c#代码。请告诉我怎么了。
这是我的代码:
<script>
function reg() {
var name = document.getElementById('name').value;
var id = document.getElementById('cnic').value;
var age = document.getElementById('age').value;
var ph = document.getElementById('phone').value;
var pas = document.getElementById('pass').value;
if (id == '' || pas == '' || age == '' || ph == '' || pas == '')
window.alert("Write all fields");
else {
__doPostBack('<%= Button1.UniqueID%>','')
}
}
</script>
<div >
<asp:Button id="Button1" OnClientClick="reg()" runat="server" Text="Submit"/>
</div>
以下是与按钮关联的服务器端c#函数:
protected void Btn_Click(object sender, EventArgs e)
{
Button clickedButton = (Button)sender;
clickedButton.Text = "...button clicked...";
}
注意:在else
块中,我希望reg()
函数重定向到Btn_Click
函数。
答案 0 :(得分:1)
自从我这样做已经有一段时间了,但是我认为它应该是服务器ID,而不是按钮的客户端ID。
__doPostBack('<%= button1.UniqueID%>','')
答案 1 :(得分:0)
好像您在OnClick
中缺少asp:Button
。
<asp:Button id="Button1" OnClientClick="reg()" runat="server" Text="Submit" OnClick="Btn_Click"/>
ASP.NET中有一个内置方法可以生成__doPostBack()方法。
<%= Page.ClientScript.GetPostBackEventReference(Button1, String.Empty) %>;
如果更改后仍无法正常工作,建议您单击按钮时使用浏览器调试工具(或Fiddler)的“网络”选项卡检查网络流量。
还要在reg()方法内设置一个断点,以查看控件的运行方式。