使用jquery提交表单时的递归问题和默认值

使用jquery提交表单时的递归问题和默认值,jquery,forms,submit,preventdefault,Jquery,Forms,Submit,Preventdefault,我有一个表格,需要一些输入,那里的一切都是桃色的。从这个表单中,我想获取一个输入值,并通过jquery将其分配给一个隐藏值。为此,我写了以下内容: <script type="text/javascript"> jQuery(document).ready(function() { function preventDefault(e){ e.preventDefault(); } jQuery('#rs

我有一个表格,需要一些输入,那里的一切都是桃色的。从这个表单中,我想获取一个输入值,并通过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>

jQuery(文档).ready(函数(){
功能默认值(e){
e、 预防默认值();
}
jQuery('#rsvp form').bind('submit',preventDefault);
jQuery(“#rsvp表单”).submit(函数(e){
var emailvalue=jQuery(“#personemail\\[0\\]”)。val();
jQuery('person_email').val(emailvalue);
警报(jQuery(“#person_email”).val());
jQuery(“#rsvp form”).unbind('submit',preventDefault);
jQuery(this.trigger('submit');
});
});

我正在绑定。在更改我的值的同时提交默认值没有问题。问题是在更改值后提交表单。无论我尝试了什么,它都会以无休止的循环结束。如果我删除触发器或.submit()或类似的东西,并将其保留为unbind,则不会发生任何事情。在这一点上有点困惑。

你不应该需要这些。如果要在表单提交之前设置该值,可以这样轻松地进行:

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

您需要调用本机
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
});
jQuery(“#rsvp表单”).submit(函数(e){
var emailvalue=jQuery(“#personemail\\[0\\]”)。val();
jQuery('person_email').val(emailvalue);
警报(jQuery(“#person_email”).val());
jQuery(“#rsvp form”).unbind('submit',preventDefault);

this.submit();//为什么首先需要preventDefault?已隐藏#person_电子邮件字段。需要preventDefault才能停止提交,以便我可以从表单上的另一个输入(在本例中为personemail[0])为隐藏字段赋值,然后提交表单。谢谢。这很好用,不过看起来hunter是对的,在我的情况下,我真的不需要担心preventDefault的东西。不过非常感谢你的帮助,我会定义。记住触发器和使用本机方法之间的区别。