2013-06-19 102 views
1

我的腳本看起來像這樣。 是的,它來自一個插件。 沒有,我不喜歡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");