2015-09-02 1 views
0

Я установил определенные поля для отключения при установке флажка. Но когда пользователь отправляет данные формы и недействителен, страница перезагружается, когда флажок остается установленным, но поля больше не отключены. Не знаете, как я могу это исправить?Отключенные поля не отключены/перезагружены при перезагрузке страницы из проверки

Javascript:

$('#CommentFrequencyOk').on('click', function() { 
    $('#test').prop('disabled', this.checked); 
}); 

поля должны быть отключены:

<fieldset id="test"> 
    <?php echo $this->Form->input('frequency_remarks'); ?> 
    <?php echo $this->Form->input('duration_remarks'); ?> 
</fieldset> 

И чекбокс:

<div class="checkbox"> 
    <label for="CommentFrequencyOk"> 
     <input type="hidden" name="data[Comment][frequency_ok]" id="CommentFrequencyOk_" value="0" /> 
     <input type="checkbox" name="data[Comment][frequency_ok]" class="checkbox" value="1" id="CommentFrequencyOk" /> Frequency 
    </label> 
</div> 
+0

сделал попытку attr ('disabled', 'this.checked') вместо prop ('disabled', this.checked); –

+0

как раз. Я не боюсь. –

+0

попробуйте эту опору ('disabled', true); –

ответ

3

Написать следующую строку на странице загрузки также т.е.

// On Page Load 
    $('#test').prop('disabled', $('#CommentFrequencyOk').is(":checked")); 
+0

Спасибо. Но как именно я устанавливаю коды выше при загрузке страницы? –

+0

Запишите эту строку внутри $ (document) .ready (function() { // console.log («ready!»); }); –

+0

Он работает так, как должен. Спасибо. –

0

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

При рендеринге страницы с помощью PHP вы можете просто отключить поле там во время перезагрузки страницы.

+0

Большое спасибо. Я попробовал это. Но если я отключил поля с помощью PHP, пользователь не сможет их включить. –

0

Попытка загрузить сценарий загрузки страницы

$(function(){ 
$('#test').prop('disabled', $('#CommentFrequencyOk').is(":checked")); 
}); 
+0

Основная проблема вашего кода, загружающего только скрипт. Таким образом, вы должны загружать функциональные возможности при загрузке самой формы. – vinodh

0

Page перезарядка галочкой и DIV # тест отключен, если установлен флажок. Вы можете попробовать по текущему коду.

<script> 
    $(document).ready(function(){ 
    $('#CommentFrequencyOk').on('click', function() { 
    $('#test').prop('disabled', this.checked); 
}); 
}); 
</script> 

<fieldset id="test" <?php if(@$_GET['data']['Comment']['frequency_ok'] == 1): echo 'disabled'; endif; ?>> 
    <?php echo $this->Form->input('frequency_remarks'); ?> 
    <?php echo $this->Form->input('duration_remarks'); ?> 
</fieldset> 

<div class="checkbox"> 
    <form > 
    <label for="CommentFrequencyOk"> 
     <input type="hidden" name="data[Comment][frequency_ok]" id="CommentFrequencyOk_" value="0" /> 
     <input type="checkbox" name="data[Comment][frequency_ok]" class="checkbox" value="1" id="CommentFrequencyOk" <?php if(@$_GET['data']['Comment']['frequency_ok'] == 1): echo 'checked'; endif; ?> /> Frequency 
    </label> 
    <input type="submit" value="Submit"/> 
    </form> 
</div> 
Смежные вопросы