Всем привет. Не могу понять, как на этом http://dakupi.ru сайте в разделе заказать обратный звонок, происходит проверка за заполнение полей? Кто может подсказать?
никак я в номер телефона вбил чтото типа такого 939о34 меня пропустило а вот о чем ты .. понял вот функция js Код (Text): function callback_send(){ var data = $("#callback-form").serialize(); $.ajax({ url: "/callback", type: 'post', beforeSend: function(){ }, success: function(data){ if(data.error){ alert(data.error); } else{ $("#callback-form").html( '<p id="callback-title" style="margin:60px 0 0 10px">Спасибо!<br/>Мы свяжемся с вами<br/>в ближайшее время!</p>' ); yaCounter10672864.reachGoal('CALLBACK'); } }, error: function(data){ }, complete: function(){ }, data: data }); а теперь вот что происходит когда я тыкаю с неполными данными ( firebug rules) POST http://dakupi.ru/callback {"error":"Пожалуйста, укажите Ваш номер телефона"} Добавлено спустя 58 секунд: все проверки на стороне сервера (( ужас .. я с помощью валидации и маски ввода прям на форме отрабатываю Добавлено спустя 59 секунд: на полистай маска ввода мне больше всего нравится viewtopic.php?f=27&t=46089
Я сам использую Masked Input Plugin, хорошая вещь.. Меня интересует как в случае как на том сайте сделать просто проверку с помощью js на простое заполнение форм? Тоесть как туда прикрутить Код (Text): function callback(){ var f=document.forms['callback-form']; if(!f.name.value || f.name.value=='') alert('Введите ваше имя!'); else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!'); else if(!f.city.value || f.city.value=='') alert('Введите свой город!!'); else f.submit(); }
аа =) ну тогда вот так тут Код (Text): <form action="/callback" method="post" id="callback-form"> <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback_send();return false;"/> </form> Добавлено спустя 1 минуту 7 секунд: вот это ты ищешь onClick="callback_send();return false;"
а как мою проверку туда прикрутить? Код (Text): function callback(){ var f=document.forms['callback-form']; if(!f.name.value || f.name.value=='') alert('Введите ваше имя!'); else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!'); else if(!f.city.value || f.city.value=='') alert('Введите свой город!!'); else f.submit(); }
а разве не так ? <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback();return false;"/>
пробовал, после нажатия кнопки "заказать" просто закрывается окно.. Это обращение к функции которую ты во втором посте писал..
воткнул это в html - у меня требует имя пользователя =) Код (Text): <form action="/callback" method="post" name="callback-form" id="callback-form"> <input type="text" name="name"> <input type="image" class="button" src="/img/callback_button.jpg" onClick="callback();"/> </form> <script type="text/javascript" charset="utf-8"> function callback(){ alert ("rere"); var f=document.forms['callback-form']; if(!f.name.value || f.name.value=='') alert('Введите ваше имя!'); else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!'); else if(!f.city.value || f.city.value=='') alert('Введите свой город!!'); else f.submit(); } </script>
там это там,а у нас это тут =) создай пустую html и вставь туда весь текст который дал =) просто на своем компе ..
форумчане меня конечно поругают- но мне просто лениво собирать из 2 одно -) Код (Text): function callback_send(){ var f=document.forms['callback-form']; if(!f.name.value || f.name.value=='') alert('Введите ваше имя!'); else if(!f.phone.value || f.phone.value=='') alert('Введите номер телефона!'); else if(!f.city.value || f.city.value=='') alert('Введите свой город!!'); else { var data = $("#callback-form").serialize(); $.ajax({ url: "/callback", type: 'post', beforeSend: function(){ }, success: function(data){ if(data.error){ alert(data.error); } else{ $("#callback-form").html( '<p id="callback-title" style="margin:60px 0 0 10px">Спасибо!<br/>Мы свяжемся с вами<br/>в ближайшее время!</p>' ); yaCounter10672864.reachGoal('CALLBACK'); } }, error: function(data){ }, complete: function(){ }, data: data }); }
Ок, JS отключен, а браузер не поддерживает атрибут pattern, либо я открыл твою форму и выпилил паттерн руками. Что помешает мне в таком случае заслать тебе мусор, который, к тому же, может быть потенциально опасным?
ну прям дрючится, скажешь тоже. Какой сервер должен быть, чтобы проверка пачки входящих данных его дрючила? Нагрузка на запись всегда в разы меньше нагрузки чтения, а проверка входящих данных - это то, ради чего стоит потратить пару-тройку тактов шестиядерного ксенона. Твоя "фильтрация" основана на том, что пользователь хороший и пушистый. Только вот если на тысячу хороших людей найдется один мудак - тебе хватит и этого, чтобы потом ведрами гумно вычерпывать. Смекаешь? Юзер, как ни парадоксально, твой враг. Интернет - поле боя. Это крайне агрессивная среда. Никогда не верь тому, что пришло от юзера. Все можно подделать, все можно обойти. Верь только тому, что скажет о пришедших данных твой сервер.
Вобще-то речь о том, что проверять на стороне сервера обязательно. Остальное - для красоты. Валидация на сервере через AJAX не редкость. https://www.google.ru/search?q=ajax+server+side+validation Помоему заманчиво писать правила валидации только один раз, а использовать на обоих концах.
Что не редкость - знаю. Постоянно работаю с Open Cart, там и корзина, и оформление заказа - всё AJAX.
Просто надо понимать, что для чего служит. Валидация на стороне клиента, юзание js ли, pattern ли служит всего двум целям: 1) Чтобы подсказывать пользователю, если он где-то ошибся; 2) Чтобы предотвратить нежелательные "холостые" запросы к серверу, которые априори не имеют смысла; Если запрос все же случился, то тут, к примеру, сценарии такие: 1) Все данные валидные и пришли от добросоветсного пользователя; 2) Данные левые и пришли от того, кто умеет обходить валидацию; 3) Данные левые и пришли с другого сервера через курлу; 4) Данные левые и пришли из никсовой консоли какого-то хитрого кулхацкера; И как угадать? 3 к 1, что данные могут придти левые. Такой вариант вы тоже рассматривали, Slavka?