使用 jquery 提交表单时的 PreventDefault 递归问题

发布于 2024-11-06 03:56:48 字数 826 浏览 0 评论 0原文

我有一个需要一些输入的表格,里面的一切都很完美。我想从这个表单中获取一个输入值并通过 jquery 将其分配给一个隐藏值。为此,我编写了以下内容:

<script type="text/javascript">
    jQuery(document).ready(function() {
        function preventDefault(e){
            e.preventDefault();
        }

        jQuery('#rsvp-form').bind('submit', preventDefault);
        jQuery('#rsvp-form').submit(function(e) {
            var emailvalue = jQuery('#personemail\\[0\\]').val();
            jQuery('#person_email').val(emailvalue);
            alert(jQuery("#person_email").val());
            jQuery('#rsvp-form').unbind('submit', preventDefault);
            jQuery(this).trigger('submit');
        });
    });
</script>

我将 .preventDefault 绑定到提交,并且毫无问题地更改我的值。问题是在更改值后提交表单。无论我尝试什么,它都会以无限循环结束。如果我删除触发器或 .submit() 或类似的东西,然后将其保留为取消绑定,则不会发生任何情况。此时有点难住了。

I have a form that takes some inputs, everything there is peachy. From this form I want to take a input value and assign it to a hidden value via jquery. To do this I had written the following:

<script type="text/javascript">
    jQuery(document).ready(function() {
        function preventDefault(e){
            e.preventDefault();
        }

        jQuery('#rsvp-form').bind('submit', preventDefault);
        jQuery('#rsvp-form').submit(function(e) {
            var emailvalue = jQuery('#personemail\\[0\\]').val();
            jQuery('#person_email').val(emailvalue);
            alert(jQuery("#person_email").val());
            jQuery('#rsvp-form').unbind('submit', preventDefault);
            jQuery(this).trigger('submit');
        });
    });
</script>

I'm binding .preventDefault to the submit just fine along with changing my value without issue. The problem is submitting the form after changing the value. No matter what I've tried it ends in an endless loop. If I remove the trigger or a .submit() or something along those lines and just leave it with the unbind, nothing happens. Kind of stumped at this point.

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

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

发布评论

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

评论(2

憧憬巴黎街头的黎明 2024-11-13 03:56:48

你不应该需要这些。如果您想在表单提交之前设置该值,您可以像这样轻松完成:

jQuery(function() {
    jQuery('#rsvp-form').submit(function(e) {
        var emailvalue = jQuery('#personemail\\[0\\]').val();
        jQuery('#person_email').val(emailvalue);
    });
});

You shouldn't need any of that. If you want to set that value before the form submits you can do so easily like this:

jQuery(function() {
    jQuery('#rsvp-form').submit(function(e) {
        var emailvalue = jQuery('#personemail\\[0\\]').val();
        jQuery('#person_email').val(emailvalue);
    });
});
烟织青萝梦 2024-11-13 03:56:48

您需要调用本机 submit 方法,而不是触发 jQuery 事件。

jQuery('#rsvp-form').submit(function(e) {
    var emailvalue = jQuery('#personemail\\[0\\]').val();
    jQuery('#person_email').val(emailvalue);
    alert(jQuery("#person_email").val());
    jQuery('#rsvp-form').unbind('submit', preventDefault);
    this.submit(); // <-- this line here
});

You need to call the native submit method, rather than triggering the jQuery event.

jQuery('#rsvp-form').submit(function(e) {
    var emailvalue = jQuery('#personemail\\[0\\]').val();
    jQuery('#person_email').val(emailvalue);
    alert(jQuery("#person_email").val());
    jQuery('#rsvp-form').unbind('submit', preventDefault);
    this.submit(); // <-- this line here
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文