- 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
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
$('.send_message').click(function(e){
e.preventDefault();
var error = false;
var name = $('#contact_form_holder'+this.id).find('#name').val();
var email = $('#contact_form_holder'+this.id).find('#email').val();
var phone = $('#contact_form_holder'+this.id).find('#phone').val();
var subject = $('#contact_form_holder'+this.id).find('#subject').val();
var message = $('#contact_form_holder'+this.id).find('#message').val();
if(name.length == 0){
var error = true;
$('#contact_form_holder'+this.id).find(".name_field").addClass('error1');
}else{
$('#contact_form_holder'+this.id).find(".name_field").addClass('success');
}
if(email.length == 0 || email.indexOf('@') == '-1'){
var error = true;
$('#contact_form_holder'+this.id).find(".email_field").addClass('error1');
}else{
$('#contact_form_holder'+this.id).find(".email_field").addClass('success');
}
if(phone.length == 0){
var error = true;
$('#contact_form_holder'+this.id).find(".phone_field").addClass('error1');
}else{
$('#contact_form_holder'+this.id).find(".phone_field").addClass('success');
}
if(subject.length == 0){
var error = true;
$('#contact_form_holder'+this.id).find(".subject_field").addClass('error1');
}else{
$('#contact_form_holder'+this.id).find(".subject_field").addClass('success');
}
if(message.length == 0){
var error = true;
$('#contact_form_holder'+this.id).find(".message_field").addClass('error1');
}else{
$('#contact_form_holder'+this.id).find(".message_field").addClass('success');
}
if(error == false){
$('#contact_form_holder'+this.id).find('.send_message').attr({'disabled' : 'true', 'value' : 'Sending...' });
$formVar = this.id;
$.post('send_email.php', $('#contact_form_holder'+$formVar).find('#contact_form').serialize(),function(result){
if(result == 'sent'){
$('#contact_form_holder'+$formVar).find(".cf_submit_p").remove();
$('#contact_form_holder'+$formVar).find('#mail_success').fadeIn(500);
}else{
$('#contact_form_holder'+$formVar).find('#mail_fail').fadeIn(500);
$('#contact_form_holder'+$formVar).find('.send_message').removeAttr('disabled').attr('value', 'Send The Message');
}
});
if(error == false){
$('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' });
$.post("send_email.php", $("#contact_form").serialize(),function(result){
if(result == 'sent'){
$('#cf_submit_p').remove();
$('#mail_success').fadeIn(500);
}else{
$('#mail_fail').fadeIn(500);
$('#send_message').removeAttr('disabled').attr('value', 'Send The Message');
}
});
}
}
});
});
Lokich 30.06.2014 16:13 # 0
да и вообще, в их случае jquery.unobtrusive-ajax.js && jquery.unobtrusive-validation.js решат все их проблемы они разве не в курсе, что у элементов должен быть уникальный идентификатор?
wvxvw 30.06.2014 16:23 # 0
Qwertiy 30.06.2014 23:27 # 0
А вот кто классы снимать будет, если кнопку второй раз нажать?
Lokich 01.07.2014 19:38 # 0
соответственно, у них там штук 5 contact_form_holder, к которым прибавляется id, и там он уже ищет потомков с нужным идентификатором.
Qwertiy 01.07.2014 20:10 # 0
Действительно, при таком поиске всорее всего неуникальные. Хотя, если там кусок разметки выбрасывается/вставляется, то могут быть и уникальными.
TauSigma 01.07.2014 15:06 # 0
Если в вёрстке нет явных маркетов, что на объект подвешено n событий, то можно невзначай разрушить логику работы скрипта и узнать об этом только в момент тестирования или от клиента.
Получается, что прятать в скрипт привязку к вёрстке - это заранее заложить логическую мину.
Есть некие варианты решения этой проблемы? Или остаётся уповать на человеческий фактор?
Lokich 01.07.2014 19:50 # 0
в asp.net MVC автоматически генерится все метоописание для валидации элементов управления, на основе аттрибутов класса модели, который jquery валидатор отлично проглатывает.
проще говоря, мне достаточно в модели написать
а потом в представлении @Html.EditorFor(x=> x.FieldName)
и все будет работать на автомате, если только конечно на клиенте никто не захочет отключить JavaScript, или изменить скрипт валидации, но даже в этом случае, на сервере пройдет повторная валидации, и я смогу определить, что на том конце провода меня пытаются наебать, и обойти валидацию
и не надо только говорить, что фарш типа сабжа, который ты напишешь для валидации формы будет лучше проекта, который пилят уже несколько лет.
TauSigma 01.07.2014 20:16 # 0
Но вот сайт medialine.by написан на апаче. И врятли на vNext'е с моной.
Qwertiy 30.06.2014 23:28 # 0
Шедевральная проверка)))
guest 01.07.2014 03:36 # 0
Qwertiy 01.07.2014 09:18 # 0
Да и порверка на пустую строку тут лишняя по сути. И что-то мне кажется, что поризводительность от этой проверки вряд ли улучшится...
Lokich 01.07.2014 19:51 # 0
kegdan 01.07.2014 20:09 # +2
Qwertiy 01.07.2014 20:12 # +1
eth0 01.07.2014 21:20 # +2
kegdan 01.07.2014 03:41 # 0