我可以假设 asp.net 表单的 ID 始终相同吗?

发布于 2024-09-01 03:55:12 字数 121 浏览 3 评论 0原文

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

我可以假设

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

总是可以跨浏览器工作吗?

I want to submit a simple asp.net form in jQuery

can I assume

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

always works, cross browser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

撩起发的微风 2024-09-08 03:55:12

你的意思是这样的东西像

$("#aspnetForm").submit()

上面这样可以跨浏览器工作,正如你所说的

你粘贴的代码也是跨浏览器的。它不适用于任何浏览器,所以也许这算作跨浏览器:-) 只是一个笑话

You mean something like this

$("#aspnetForm").submit()

Something like above would work cross browser as you said

The code you pasted is cross browser too. It won't work on ANY browser so maybe that counts as cross browser :-) just a joke

叹沉浮 2024-09-08 03:55:12

不,你不能这样假设。 $("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);
    }
}

No, you can't assume this. $("form[0]").submit() will submit the first form on the page. However, you can have more than one form on an ASP.NET page, though only one of these forms can be a server-side form (with runat="server" attribute).

If what you want is to submit the server-side form on an ASP.NET page then I think the best way would be to do it in code-behind by registering a script. It's a bit more hassle, but should always work (and when there is no server-side form it will detect it). Something like this:

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);
    }
}
内心旳酸楚 2024-09-08 03:55:12

这些将:

$("#aspnetForm").submit()

var theForm = document.forms['aspnetForm'];
theForm.submit()

These will:

$("#aspnetForm").submit()

or

var theForm = document.forms['aspnetForm'];
theForm.submit()
农村范ル 2024-09-08 03:55:12

如果您知道此代码将由 ASP.NET 表单中的 inputbutton 元素触发,或者您可以选择已知的 input > 或 ASP.NET 表单中的 button 元素,您可以使用 input.form.submit();

使用示例

this.form.submit();

或者

$("#some_input_or_button").get(0).form.submit();

虽然读取 input.form/button.form 属性不使用 jQuery,但它至少是跨浏览器的,因为 jQuery 本身就是这样做的

好处:此方法允许您避免依赖 ASP.NET 内部生成的表单 ID,而无需添加任何额外的服务器端接线。

If you know that this code will be triggered by an input or button element within the ASP.NET form, or if you can select a known input or button element within the ASP.NET form, you can use input.form.submit();.

Usage examples

this.form.submit();

or

$("#some_input_or_button").get(0).form.submit();

Although reading the input.form/button.form property does not use jQuery, it is at least as cross-browser since jQuery itself does this.

Benefit: This method allows you to avoid dependence on the form ID generated by ASP.NET's internals without having to add any extra wiring server-side.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文