2

私はいくつかの入力を受け取るフォームを持っています、そこにあるすべては桃色です。このフォームから、入力値を取得し、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()などを削除して、バインドを解除したままにしておくと、何も起こりません。この時点でちょっと困惑しました。

4

2 に答える 2

3

あなたはそれのどれも必要とすべきではありません。フォームを送信する前にその値を設定する場合は、次のように簡単に設定できます。

jQuery(function() {
    jQuery('#rsvp-form').submit(function(e) {
        var emailvalue = jQuery('#personemail\\[0\\]').val();
        jQuery('#person_email').val(emailvalue);
    });
});
于 2011-05-09T16:50:17.420 に答える
3

submitjQueryイベントをトリガーするのではなく、ネイティブメソッドを呼び出す必要があります。

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
});
于 2011-05-09T16:51:21.727 に答える