我想在jQuery中提交一个简单的asp.net表单
我可以假设$("form[0]").submit()
总是有效,跨浏览器?
答案 0 :(得分:1)
你的意思是这样的
$("#aspnetForm").submit()
如上所述,如上所述
可以跨浏览器工作您粘贴的代码也是跨浏览器。它不适用于任何浏览器,所以可能算作跨浏览器:-)只是一个笑话
答案 1 :(得分:1)
不,你不能假设这一点。 $("form[0]").submit()
将在页面上提交第一个表单。但是,您可以在ASP.NET页面上拥有多个表单,但这些表单中只有一个可以是服务器端表单(具有runat="server"
属性)。
如果您想要的是在ASP.NET页面上提交服务器端表单,那么我认为最好的方法是通过注册脚本在代码隐藏中完成。这有点麻烦,但应该始终有效(当没有服务器端表单时,它会检测到它)。像这样:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (this.Form != null)
{
string js = String.Format("$('#{0}').submit()", this.Form.ClientID);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Submit", js, true);
}
}
答案 2 :(得分:0)
这些将:
$("#aspnetForm").submit()
或
var theForm = document.forms['aspnetForm'];
theForm.submit()
答案 3 :(得分:0)
如果您知道此代码将由ASP.NET表单中的input
或button
元素触发,或者您可以选择已知的input
或{{1}在ASP.NET表单中的元素,您可以使用button
。
使用示例
this.form.submit();
或
$( “#some_input_or_button”)得到(0).form.submit();
虽然阅读input.form.submit();
/ input.form
属性不使用jQuery,但它至少是jQuery itself does this以来的跨浏览器。
好处:此方法允许您避免依赖ASP.NET内部生成的表单ID,而无需在服务器端添加任何额外的布线。