2013-04-14 5 views
1

Я использую кнопку отправки, сгенерированную CakePHP FormHelper. Я хотел бы отключить его с помощью jQuery после нажатия кнопки. Я попытался использовать обычный «отключенный» атрибут, но ничего не сделал.Отключить кнопку, созданную CakePHP FormHelper

Как отключить кнопку, чтобы предотвратить случайные повторные представления формы?

+0

'$ ('форма'). На ('Submit', функция() {$ ('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;' 
     )); 
?> 
Смежные вопросы