проблема рекурсии с предотвращением по умолчанию при отправке формы с помощью jquery - PullRequest
2 голосов
/ 09 мая 2011

У меня есть форма, которая принимает некоторые входные данные, все там персиковое. Из этой формы я хочу взять входное значение и назначить его скрытому значению с помощью 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 () или что-то в этом духе и просто оставляю его без привязки, ничего не происходит. Вид озадачен на этом этапе.

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Вам нужно вызвать собственный метод 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
});
3 голосов
/ 09 мая 2011

Тебе это не нужно.Если вы хотите установить это значение перед отправкой формы, вы можете сделать это легко следующим образом:

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