如何停止提交表单div中的所有字段?

发布于 2024-11-07 06:00:59 字数 202 浏览 0 评论 0原文

我将表单分为两个部分:sec1sec2。每个部分都是名为 sec1Divsec2Div 的 div 的一部分。根据某些选择,div 之一被隐藏。但问题是隐藏部分中的字段仍然被提交。请建议一种方法,以便在提交时不会提交 div 中的所有字段。

I have divided form in to two sections: sec1 and sec2. Each section is part of a div named as sec1Div and sec2Div. Based upon some selection one of div is hidden. But the problem is that still fields in hidden section are submitted. Please suggest a way so that all of fields in a div are not submitted on submit.

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

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

发布评论

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

评论(2

神回复 2024-11-14 06:00:59

有几种方法可以做到这一点。您可以将函数挂钩到表单submit的事件,也可以删除表单的name属性隐藏 div 内的字段。您还可以通过设置 disabled="disabled"禁用字段。

如果您使用 jQuery,您可以执行这些示例。

要禁用隐藏 div 中的所有字段,您可以执行以下操作:

function hideDiv(el) {
    $('input', el).each(function(){
        $(this).attr('disabled', 'disabled');
    });
    $(el).hide();
}

并且,适当的显示 div 函数:

function showDiv(el) {
    $('input', el).each(function(){
        $(this).removeAttr('disabled');
    });
    $(el).show();
}

请提醒,这只是一个代码示例。但你可以从中得到这个想法。

There are several ways to do that. You can hook a function to the form submit's event, or you can remove the name attributes of the fields inside the hidden div. You can also disable the fields, by setting disabled="disabled".

If you are using jQuery, you can do those examples.

To disable all fields in the hidden div, you can do something like:

function hideDiv(el) {
    $('input', el).each(function(){
        $(this).attr('disabled', 'disabled');
    });
    $(el).hide();
}

And, the appropriate show div function:

function showDiv(el) {
    $('input', el).each(function(){
        $(this).removeAttr('disabled');
    });
    $(el).show();
}

Please remind that this is just a code example. But you can take the idea from that.

梅窗月明清似水 2024-11-14 06:00:59

发生这种情况的原因是元素仍在 form 元素内。使用 CSS 隐藏 div 不会改变这一点 - 它们仍然存在于 DOM 中。

最简单的方法可能是向每个 div 添加一个隐藏的 input 字段,该字段可用于识别服务器端您应该处理哪个字段。然后,您可以简单地忽略隐藏表单中的数据。

如果您确实必须阻止数据被发布,这有点混乱,但您可以将隐藏的 div 的内容移到 form 元素之外,这样字段就不会'不提交。如果您想再次显示 div,则需要将字段移回原位。根据 CSS 的复杂程度,这可能会在某些浏览器中导致问题,因此我建议使用我的第一个建议。

The reason this is happening is because the elements are still within the form element. Hiding a div using CSS won't change this - they're still present in the DOM.

It would likely be easiest to add a hidden input field to each div that can be used to identify server side which one you should be processing. You can then simply ignore the data from the hidden form.

If you really must stop the data from being posted, it's a little messy but you could move the hidden div's contents outside of the form element so that the fields won't be submitted. If you wanted to display the div again, you'd then need to move the fields back in. Depending on how complex your CSS is, this could cause problems in some browsers, so I'd advise using my first suggestion.

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