2013-06-19 4 views
1

Мой сценарий выглядит следующим образом. Да, это из плагина. No, мне не удобно с ajax.Ajax форма работает только один раз

Как я могу получить эту форму для обновления и иметь возможность принимать ввод еще раз после первого отправки?

<script> 
jQuery(document).ready(function() { 
    var options = { 
     target: '#ps_output',  // target element(s) to be updated with server response 
     beforeSubmit: showRequest,  // pre-submit callback 
     success:  showResponse, // post-submit callback 
     url:   '<?php echo $link; ?>'   // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php  
}; 

    // bind form using 'ajaxForm' 
    jQuery('#thumbnail_upload').ajaxForm(options); 
}); 

function showRequest(formData, jqForm, options) { 
    //do extra stuff before submit like disable the submit button 
    jQuery('#ps_output').html('Sending...'); 
    jQuery('#submit-ajax').attr("disabled", "disabled"); 
} 

function showResponse(responseText, statusText, xhr, $form) { 
    //do extra stuff after submit 
    jQuery('#submit-ajax').attr("enabled", "enabled"); 
} 
</script> 

Спасибо большое.

EDIT:

Функция обратного вызова заканчивается в die(). Я читал это просто для того, чтобы получить выход из функции. Означает ли это конец AJAX?

+0

Вы можете предоставить скрипку или источник html? –

+0

Поскольку плагин wp находится под вопросом, отправьте ему ссылку, и - я бы сказал, что решение находится в php-файлах, связанных с обработкой формы. – sinisake

+0

Функция обратного вызова php заканчивается в уме. – Martol1ni

ответ

1

Чтобы включить, вы можете установить disabled свойство false.

jQuery('#submit-ajax').prop('disabled', false); 

Я также хотел бы изменить ваш код, который отключает его;

jQuery('#submit-ajax').prop('disabled', true); 

От jQuery docs:

Метод .prop() должен быть использован для установки отключается, и проверяется вместо метода .attr().

+0

Это работает очень хорошо! Можно ли очистить форму без обновления? – Martol1ni

+0

Если серверная сторона выполняет 'die()', это не имеет значения, потому что вы ничего не делаете с ответом, если сервер не уходит, прежде чем он завершит свою обработку. – MrCode

+0

Я отредактировал свой комментарий выше. – Martol1ni

0

Использование

jQuery('#submit-ajax').removeAttr("disabled");//to remove disabled attribue 

вместо

jQuery('#submit-ajax').attr("enabled", "enabled"); 
Смежные вопросы