проверка input (пожалуйста, помогите)
Имеется скрипт, в котором проверяются input поля. Проверка осуществляется, главным образом, по клику на кнопку <input type="submit" value="Отправить">
в <form> Вот ссылка на сам скрипт: http://ruseller.com/lessons.php?rub=32&id=246 В общем проблема в том, что у меня стоит слайдер, который прокручивает окна с полями. Там 4 слайда и мне нужно что бы поля не проверялись всюду. Потому что начинаются проблемы с разметкой. Есть 4 кнопки соответственно, которые прокручивают слайды. Так вот нужно следующее: Я нахожусь на первом слайде, на котором расположены поля input. Нужно что бы при нажатии на кнопку "Слайд 2" - функция выполняла проверку полей первого слайда, если все нормально то переходила на второй слайд. И так с каждым слайдом. Что мне нужно для этого, для этого требуется: Есть кнопка сабмита, которая по форме проверяет. Как я уже написал это выше. Так вот, нужна кнопка отдельная, которая будет проверять поля. Не сабмит. А другая. Отдельная. Что бы я мог выполнить функцию проверки не нажимая на сабмит. Надеюсь я Вас не запутал. Если что то будет непонятно - обьясню! ___ Потому что там в основном функция на javascript и я не понимаю как все это осуществить. По сути не сложно. Помогите пожалуйста ::smile24.gif:: |
А я плохой мальчик, взял и отключил JS, и того хуже, взял и отправил вам левую форму, тогда как?
Все проверки на клиенте, это сервис не более, проверять необходимо на сервере, не зависимо от того была ли проверка на клиенте. Я не ради отговорить, нет, оно конечно круто, удобно для клиента, но ... Современные браузеры поддерживают required и pattern без каких либо спец. скриптов, а для браузеров-инвалидов можно поступить иначе. |
Цитата:
_____________ Помогите сделать, заплачу даже немного. Мне не обойтись без этой функции(( |
А, то есть это данные не для хранения.
По идее форма и не должна отправляться этим плагином, если уж написано без перезагрузки. Следовательно вы что-то не так делаете, а что не знаю. Но, что представляют ваши данные, которые надо проверять на каждом шаге? Может ну его к лешему этот плагин и все можно решить несколькими строками своего кода. То есть, почитал я о его методах, ну вряд ли они вам все нужны, сомневаюсь в этом, а цеплять по каждому пустяку плагин очередной, это не гут. Опишите задачу словами - есть какая-то панель с полями, в которых нужно проводить проверку по нажатию, на следующей панели иные поля с такими-то данными и т.д. |
Нужен просто код, который будет запрещать отправку пустых инпутов и возможность запрещать в поле, там где нужны цифры - буквы. А там где нужны буквы - цифры.
___________________________________________ Вот и все, что надо по сути. Этот скрипт был довольно красиво реализован просто, на это и клюнул, как говорится. Хотел в этом скрипте проверку не переходя на следующей слайд, пока первый не проверяться - по той причине что происходил взрыв с разметкой (если скрипт проверял сразу все слайды) :-) Если есть какие то методы проверки лучше то я только за)) Вот, надеюсь ответил на все |
Так нужна отправка данных или нет? Вроде бы как из написанного выше не нужно, но запрещать отправку пустых инпутов, означает что надо?
Если вам нужна проверка ради перехода, а данные серверу не нужны, то и формы как таковой не нужно, достаточно только полей ее. Но странно - для чего эта проверка JS, для того чтобы не рвало верстку при переходах? Если проблемы в верстаке, то почему не решать ее присущими ей инструментами, а JS? Что это означает, поясните. Проверить поле на пустоту и цифры/литеры, это пустячная задача, и плагин точно не нужен. Но только пояснять надо, может и этого не требуется. Или все таки нужна проверка. |
Ну у меня есть страничка, на этой страничке - форм и в форме, разумеется, инпуты. Инпуты мне нужны для того, что бы человек ввел в них необходимые для расчетов параметры. После чего при нажатии сабмита, в форм срабатывает экшн, который переносит все значения, которые были сделаны в инпутах на новую страницу php через протокол $_POST там я по этим средствам принимаю введенные параметры и обрабатываю их в расчетах, которые в результате выходят. Вот и вся операция. Следовательно, если в поле ввести не то значение, что надо то конечные расчеты все покатятся коту под хвост. И по этому нужно сделать соответствующую проверку, которая не даст ввести, соответственно, туда где нужны цифры - буквы и наоборот. Там все по экшн и данные само собой никуда не сохраняются в бд.
Нужна просто проверка, и все |
Сначала:
>проблема в том, что у меня стоит слайдер, который прокручивает окна с полями. Там 4 слайда и мне нужно что бы поля не проверялись всюду. Тут была проблема перезагрузки. Теперь: >при нажатии сабмита, в форм срабатывает экшн, который переносит все значения, которые были сделаны в инпутах на новую страницу Теперь явно о новой странице. Давайте так. Из всех пояснений, я могу только предполагать, что же все таки нужно. Пишу пример по предположениям, все в одном файле. Никаких перезагрузок, асинхронными запросами, где div - это какие-то ваши слайды, в которые я так понимаю должны помещаться новые формы на каждом шаге. Типа такого должно быть? <? //для РНР не ниже 5.4 //это имитация подключаемых форм каждого этапа, их элементов $fld = [ 1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> <input type="hidden" name="fld[]" value="1">', '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br> <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">', '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> <input type="hidden" name="fld[]" value="3">' ]; $chk = [ ['flt'=>FILTER_VALIDATE_REGEXP, 'opt'=>['options'=>['regexp'=>'/^\d+$/']], 'err'=>1], ['flt'=>FILTER_VALIDATE_REGEXP, 'opt'=>['options'=>['regexp'=>'/^[a-z]+$/']], 'err'=>2] ]; $fields = [ [$chk[0], $chk[0], $chk[1]], [$chk[0], $chk[0]], [$chk[1], $chk[1], $chk[0]], [$chk[1], $chk[0]] ]; if($_POST) { $val = array_map('trim', $_POST['fld']); $src = array_pop($val); if($e = checkForm($fields[$src], $val)) exit(json_encode(['err'=>$e])); exit(json_encode(['fld'=>$fld[$src+1]])); } function checkForm($fld, $val) { $err = null; foreach($fld as $k=>$v) { if(!$val[$k]) $err[$k] = getError(0); else if(!filter_var($val[$k], $v['flt'], $v['opt'])) $err[$k] = getError($v['err']); continue; } return $err; } function getError($e) { $err = ['Empty!', 'Only numbers!', 'Only letters!']; return $err[$e]; } ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script> $(function() { $('form').submit(function() { var f = $(this); $.post(location, f.serializeArray(), function(d) { if(d.err) { $.each(d.err, function(i, v) { document.forms[0].elements[i].value = v; }) } else { f.html(d.fld+'<br><button>Send</button>'); } }, 'json'); return false; }); }); </script> </head> <body> <p>ttttttttttt</p> <div style="width:200px;height:100px;padding:20px;background:#eee"> <form> <input placeholder="Number" name="fld[]"><br><input placeholder="Number" name="fld[]"> <br><input placeholder="String" name="fld[]"><br> <input type="hidden" name="fld[]" value="0"> <button>Send</button> </form> </div> <p>ttttttttttt</p> </body> </html> |
laimas, Извините за отсутствие, была проблема с интернетом
Скажите, а за что отвечают эти строки? $fld = [ 1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> ', '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br> <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">', '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> <input type="hidden" name="fld[]" value="3">' ]; И хотел проверить работу сценария но у меня выбило ошибку: Parse error: syntax error, unexpected '[' in C:\OpenServer\domains\test1.ru\test.php on line 4 А 4 line в коде начинается как раз таки с кода: $fld = [ У Вас все нормально с его работой? |
То есть вы и РНР не знаете?
Я вверху написал - для РНР не ниже версии 5.4. В этой версии объявлять массив можно так же как и в JS - квадратные скобки, без объявления типа. Если у вас РНР ниже этой версии, то нужно писать так: $fld = array( 1 => '<input placeholder="Number" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> ', '<input placeholder="String" name="fld[]"><br><input placeholder="String" name="fld[]"><br> <input placeholder="Number" name="fld[]"><input type="hidden" name="fld[]" value="2">', '<input placeholder="String" name="fld[]"><br><br><input placeholder="Number" name="fld[]"> <input type="hidden" name="fld[]" value="3">' ); Замените во всем коде примера квадратные скобки на такое объявление и все будет работать. PS. Open Server имеет в своем составе версию 5.4, и если на реальном сервере у вас есть РНР 5.4, то и на реальном, и на локальном лучше подключить ее. В версии 5.4 появились удобные фичи, которыми грех не воспользоваться. |
laimas, Я заметил что от 5.4, вот только включить забыл его. Вы правы в 5.4 не разбираюсь да и в общем не очень, так бы не стал сюда писать.
Я все сделал, все работает. Большое спасибо! Если Вы не против, я вам еще напишу, если что то будет не понятно. Что я Вам должен буду? |
Что я Вам должен буду?
Если бы вы сделали мне заказ на определенную работу, и эта работа была бы действительно серьезной, тогда бы можно было вести речь о финансах. В данном случае я привел лишь простой пример, причем основываясь на своих предположениях, а он может и не отражать нужное, и о какой либо оплате речи быть не может. Это просто диалог вопрос-ответ в рамках форума. |
Дело в том, что я еще кое что спрошу, если у Вас будет время и желание ответить. Когда буду к сайту все лепить.
Все равно, ради приличия должен был спросить. Если что - я еще отпишусь, и если в свою очередь, что то будет серьезное. Вы напишите как считаете, за оплату или нет. Огромное спасибо!! |
На то и форум, чтобы спрашивать.
А как вы себе представляете оплату в рамках форума - вставить карту в поле input формы, перечислив деньги на мой счет? :) Конечно я не буду вам расписывать все от и до конкретно по вашему коду, я просто не знаю его. Практически у каждой задачи есть "1000 и одна ночь" вариантов решения, я представил лишь одно из них - если интересно, подумайте, что означают массивы мною описанные и что это дает. Но это, написанное мною, не такая и непосильная задача, чтобы требовать за нее оплату, как никто не требует ее здесь, отвечая на вопросы. Другое дело, если нужно все переделать или написать конкретную задачу, тогда это работа, но не на страницах форума, а вне его - деловые предложения на публике не обсуждаются. А спрашивать, пожалуйста, не обязательно я, кто-то другой может ответить. |
Часовой пояс GMT +3, время: 18:51. |