我可以假设asp.net表单的ID总是一样吗?

时间:2010-05-05 20:32:02

标签: asp.net form-submit

我想在jQuery中提交一个简单的asp.net表单

我可以假设

$("form[0]").submit()

总是有效,跨浏览器?

4 个答案:

答案 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表单中的inputbutton元素触发,或者您可以选择已知的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,而无需在服务器端添加任何额外的布线。