я на сег. день так делаю: это блок в шаблоне HTML: <!-- BEGIN REGFORM --> <h1>Регистрация</h1> <div id="form"> <div class="ui-widget ui-state-highlight ui-corner-all" style="padding: 30px;"> <form name="regform" id="regform"> <input type="hidden" name="cz" value="{ME}"> <input type="hidden" name="method" value="reg"> <table> <tr> <td> <label>E-mail:</label> <input type=text name=email id=flogin><br /> <span id="floginerror" class="error"></span> </td> </tr> <tr> <td> <label>Пароль:</label> <input type=password name=pass1 id=fpass1> </td> </tr> <tr> <td> <label>Пароль еще раз:</label> <input type=password name=pass2 id=fpass2> </td> </tr> </table> <button id="fbut2" class="ui-state-default ui-corner-all ui-state-focus" OnClick="$('#regform').submit(); return false;">Зарегистрироваться</button> </form> </div> </div> <script> $("#flogin").EnigmaValidatorEmail( { output : 'floginerror' } ); $("#flogin").focus(); $("#regform").submit( function() { var email = $('#flogin').val(); var emailerror = $('#floginerror').text(); if( email == '' ) { $.EnigmaError('Введите свой e-mail!',{},function() { $('#flogin').focus() }); return false; } if( emailerror != '' ) { $.EnigmaError(emailerror,{},function() { $('#flogin').focus() }); return false; } var p1 = $('#fpass1').val(); var p2 = $('#fpass2').val(); if( p1 == '') { $.EnigmaError('Введите пароль.',{},function() { $('#fpass1').focus() }); return false; } if( p2 == '') { $.EnigmaError('Подтвердите пароль.',{},function() { $('#fpass2').focus() }); return false; } if( p1 != p2) { $.EnigmaError('пароли не совпадают.',{},function() { $('#fpass1').val('').focus(); $('#fpass2').val('') }); return false; } //$("#fbut2").text('регистрация...').attr('disabled','disabled'); $(this).EnigmaSubmit(); return false; } ); </script> <!-- END REGFORM --> суть в том, что форма при посте не затрагивается и ошибка, даже когда ушел пост, не затронет полей. =)
HTML: [:loop options:] <input type="checkbox" name="option[]" value="[:value:]"[:checked:] /> [:valueTitle:]<br> [:/loop:]
Koc я говорил про статичную форму и откуда переменаня checked возьмётся? я знал что ты скажешь это а если форма и её обработка на разных страницах?
PHP: <?php $options = array(); $option = array( 'value' => 1, 'valueTitle' => 'option 1' 'checked' => (in_aray(1, $_POST['options[]'])) ? CHECKED : NULL ); $options[] = $option; // ... $tpl->l('options', $options); ага. У меня тоже таких куча. Добавление-редактирование: атрибутов, наборов атрибутов, производителей, товаров, заказов, типов оценок, новости, контент, ... .
Koc статичная форма это значит ничего в php не генерится а всё прописывается в шаблончике вручную =) может быть 1000 боксиков многовато, это я для гиперболы, а вот 10-15 бывается приходится писать такого нет
короче я пытаюст вас подвести к тому что может настать такая ситуация когда придётся прописывать каждое поле вручную HTML: <input type='checkbox' name='option[]' value='1' <?if(in_array(1,$_POST['option])) print "checked";?>> Option 1<br> <input type='checkbox' name='option[]' value='2' <?if(in_array(2,$_POST['option])) print "checked";?>> Option 2<br> <input type='checkbox' name='option[]' value='3' <?if(in_array(3,$_POST['option])) print "checked";?>> Option 3<br> <input type='checkbox' name='option[]' value='4' <?if(in_array(4,$_POST['option])) print "checked";?>> Option 4<br>
Koc да даже если ты будешь вставлять это всё динамически, будет у тебя форма с сотней полей ЗАДОЛБАЕШЬСЯ
не знаю. Пока жив-здоров. Будет много чекбоксов - сделаю массив значение, valuesTitle через запятую, а $options будут генерироваться в массиве.
Koc а будет много всяких разных поелй в форме? ладно, заканчивай сравнивать несравнимые вещи, они не сравниваются Здравые альтернативы, пока: Генератор форм, JS проверка
Mr.M.I.T. а мне нравится твоя идея, если отбросить вопрос с хранением переменных в сессии. Я когда-то писал похожую реализацию но опробовать в деле так и не успел. Форму можно хранить в отдельном файле и инклудить в шаблон. В общем надо развивать идею.
Sergey89 там по дефолту сессии не используются, сессии используются для реализации дополнительной фичи - кеширования 440Hz ну если посмотреть в корень - то да =) холивар тут ниочём
сколько лет, сколько зим, а формкешер все ещё работает правда немного переделанный, но в целом все тоже самое... Вы спросите как я заполняю формы при редактировании? А вот так: Код (PHP): FormCacher::AddVar($form_data);
автоматом подставлят в формы значения (в value, textarea, select'ы, radio и пр) сейчас не так актуально, тк есть аякс (хотя я использую для первичного заполнения при редактировании) вот тоже самое почти http://dklab.ru/lib/HTML_FormPersister/
Код (Text): {{ Form::text('name') }} А оно уже само там решает что вставить: данные из модели, сохраненные значения и т.д. ))