- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
function Order(obj) {
var frm = $(obj);
var first_name = frm.find("input[name='first_name']").val();
var last_name = frm.find("input[name='last_name']").val();
var email = frm.find("input[name='email']").val();
var phone = frm.find("input[name='phone']").val();
var text = frm.find(".coment-form-textarea").val();
var captcha = frm.find("input[name='captcha']").val();
var valid = true;
MsgErrorDestroy(frm, '#order-first_name', 'input[name="first_name"]');
MsgErrorDestroy(frm, '#order-last_name', 'input[name="last_name"]');
MsgErrorDestroy(frm, '#order-email', 'input[name="email"]');
MsgErrorDestroy(frm, '#order-phone', 'input[name="phone"]');
MsgErrorDestroy(frm, '#order-text', '.coment-form-textarea');
if (first_name == '') {
MsgError(frm, 'Введите ваше имя.', '#order-first_name', 'input[name="first_name"]');
valid = false;
}
if (last_name == '') {
MsgError(frm, 'Введите вашу фамилию.', '#order-last_name', 'input[name="last_name"]');
valid = false;
}
if (!emailValid(email)) {
MsgError(frm, 'Введите ваш email.', '#order-email', 'input[name="email"]');
valid = false;
}
if (phone == '') {
MsgError(frm, 'Введите ваш номер телефона.', '#order-phone', 'input[name="phone"]');
valid = false;
}
if (text == '') {
MsgError(frm, 'Введите ваше сообщение.', '#order-text', '.coment-form-textarea');
valid = false;
}
if (captcha == '') {
MsgError(frm, 'Введите капчу.', '#comment-capcha', 'input[name="captcha"]');
valid = false;
}
if (valid == false) {
return false;
}
}
function MsgError(frm, msg, select_msg, select_input) {
if (select_msg != 0) {frm.find(select_msg).html(msg);}
if (select_input != 0) {frm.find(select_input).addClass('input-error');}
if (select_msg != 0) {frm.find(select_msg).removeClass('hide');}
//frm.find('#'+'profile-'+key).addClass('show');
}
function MsgErrorDestroy(frm, select_msg, select_input) {
if (select_msg != 0) {frm.find(select_msg).html('');}
if (select_input != 0) {frm.find(select_input).removeClass('input-error');}
if (select_msg != 0) {frm.find(select_msg).removeClass('show');}
//$('#'+'profile-'+key).addClass('hide');
}
Валидация какого-то там заказа. Автор вероятно не слышал про массивы и объекты.
Vasiliy 17.06.2013 19:25 # +2
eth0 17.06.2013 22:00 # 0
1024-- 17.06.2013 22:56 # 0
больше не надо тратить ресурсы сервера на генерацию капчи
scriptin 17.06.2013 23:47 # +4
bormand 17.06.2013 23:51 # +1
1024-- 17.06.2013 23:56 # 0
scriptin 18.06.2013 00:02 # 0
1024-- 18.06.2013 00:10 # +3
Хотя, если просить сфотографироваться на фоне капчи, написаннной на бумаге... Впрочем, это уже алгоритм TITS OR GTFO!
bormand 18.06.2013 05:42 # 0
Тоже вполне имеет право на жизнь ;)
Stallman 18.06.2013 09:16 # +4
guest 18.06.2013 21:47 # 0
1) Имя функции с большой буквы (это ведь не конструктор, нафига?)
2) Переменная с непонятным именем frm
3) Повсеместное использование метода find для поиска элементов, когда уместнее передавать контекст вторым аргументом в селектор.
4) Многократное использование var (объявлять переменные нужно через запятую)
5) Многократное повторение одних и тех же действий с разными параметрами
6) if (first_name == '') лучше if(!first_name), а еще лучше вообще все переписать
7) removeClass('hide'); тут видимо должно быть просто hide()
8) removeClass('show'); а тут show()
bormand 19.06.2013 05:23 # 0
Нахрена? Имхо, в данном случае (с достаточно длинной инициализацией), var в каждой строке смотрится логичнее.
baldrs 19.06.2013 15:33 # 0
Vasiliy 19.06.2013 15:40 # 0
Щас будет не много скучно расскажу из личного опыта.
Когда я устраивался меня расспрашивали о высоких материях типа паттернов, о том как реализовать MVC на js, на пыхе. О том в каких случаях следует использовать шаблон фабрика а в каких фабричный метод.
Так вот на практике 90% знаний для выполнения моих функций просто не к чему. Вполне достаточно понимать MVC и иметь навык не лепить толстые контролеры.
baldrs 19.06.2013 15:43 # 0
Vasiliy 19.06.2013 15:46 # +1
В отдел маркетинга. Талант не должен пропадать.
baldrs 19.06.2013 15:56 # 0
Vasiliy 19.06.2013 16:52 # 0
3Doomer 19.06.2013 17:22 # +1
1) Существуют разные стили именования, и тут использован(О, УЖАС!!!) один из них.
2) Легко догадаться, что frm - form(не from же, очевидно). Опять - же, именование переменных - личное дело автора.
4) Можно != нужно. Впрочем, тут я с вами согласен.
5) Ваши предложения?
7) быть может, у автора своя реализация removeClass?
8) см. выше
baldrs 19.06.2013 18:39 # +1
Объект + цикл?
> 7) быть может, у автора своя реализация removeClass?
Нет там в html конструкции вида
Lure Of Chaos 20.06.2013 08:37 # 0
> Объект + цикл?
а можно и без цикла: $.each + замыкание
deep 22.06.2013 22:17 # 0
4) уже ответили - разницы нет
7 и 8) не угадал, может я не хочу изменять множество CSS-свойств (а .hide() и .show() меняет width, height, opacity, visibility) целевого объекта. Я пропишу так:
.hide {
display: none;
}
и все.
deep 22.06.2013 22:19 # 0