2013-04-14 74 views
1

我正在使用由CakePHP FormHelper生成的提交按鈕。我想在單擊按鈕後使用jQuery禁用它。我嘗試使用正常的「禁用」屬性,但沒有做任何事情。禁用由CakePHP FormHelper生成的按鈕

如何禁用按鈕以防止意外的表單重新提交?

+0

'$( '形式')禁用提交按鈕。在( '提交',函數(){$ ('input:submit',this).prop('disabled',true); return $('input:submit',this).prop('disabled')=== true?false:true;});' – Ohgodwhy

+0

@Ohgodwhy不需要三元。只需返回'!$('input:submit',this).prop('disabled')' – Ian

回答

4

禁用表單可能是一個更好的解決方案,可以防止除點擊提交按鈕之外的提交內容,例如在文本輸入中按回車。您可以在第一次提交後在表單上設置一個data-disabled屬性,如果設置了該屬性,則可以在提交之後阻止它。

$('form').on('submit', function(e) { 
    var $form = $(this); 

    if($form.attr('data-disabled') === true) { 
     e.preventDefault(); 
     return false; 
    } 
    $form.attr('data-disabled', true); 
}); 
+1

不重要,但爲什麼不使用'.data()'而不是? – Ian

+0

沒有任何理由,除了它專有的jQuery,並且將實現與jQuery相結合甚至更多。 –

+0

這沒有意義。您已經在使用jQuery,那麼它對jQuery所有權有什麼影響?如果使用'.attr',則無關緊要,無論如何,屬性/值都會自動導入到'data'中。所以它不會像變化很大。我的觀點是爲什麼不利用這一點?這顯然不重要,我只是想知道 – Ian

0

你簡單地說,添加提交按鈕,您的形式,一旦它被點擊

<?php 
     echo $this->Form->input('submitButton', array(
     'id' => 'submit', 
     'type' => 'submit', 
     'label' => '', 
     'onclick' => '$(#"submit").disabled = true;' 
     )); 
?>