Всем привет. Есть такой скрипт отвечающий за работу форм на сайте..
jQuery.fn.center = function () {
this.css("position","absolute");
this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) +
$(window).scrollTop()) + "px");
this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 4) +
$(window).scrollLeft()) + "px");
return this;
}
var close_dialog = function() {
$('#thanks').hide();
$('#overlay').remove();
$('#overlay').hide();
$('#name').val('');
$('#phone').val('');
$('.form_backcall').hide();
$('.form_akcia').hide();
}
$(document).ready(function() {
//---------------------------------------------------
$('form .send_audit').click(function() {
var parent = $(this).parent('form');
var errors = false;
_name = $(parent).find('#name');
_phone = $(parent).find('#phone');
_form = $(parent).find('#hidestring')
_email = $(parent).find('#email')
_ahref = $(parent).find('#ahref')
name = $(_name).val();
phone = $(_phone).val();
email = $(_email).val();
ahref = $(_ahref).val();
form = $(_form).text();
if (phone.length == 0)
{
alert('Заполните, пожалуйста поля');
errors = true;
}
else if (name.length == 0)
{
alert('Заполните, пожалуйста пол');
errors = true;
}
else if (ahref.length == 0)
{
alert('Заполните, пожалуйста поле "Ссылка на сайт"');
errors = true;
}
else if (phone.length < 7)
{
errors = true;
alert('Проверьте, пожалуйста, корректность заполнения формы. Введите Ваш номер телефона в виде +7-888-777-55-33');
}
else if (phone.length > 16)
{
errors = true;
alert('Проверьте, пожалуйста, корректность заполнения формы. Введите Ваш номер телефона в виде +7-888-777-55-33');
}
digits="0123456789+-() "
for(i=0; i<1; i++)
if (digits.indexOf(phone.charAt(i))<0)
{alert("Это должны быть цифры")
document.dataentry.phone.focus()
break
}
if (!errors)
{
$(_name).val('');
$(_phone).val('');
$(_email).val('');
$(_ahref).val('');
$.post("sendmessage_audit.php",
{ ajax: 'yes', form: form, name: name, phone: phone, email: email, ahref: ahref },//, content: content, model: model },
function(returned) {
if (returned == 'true') {
$('#thanks').center();
$('#thanks').show();
$('.close_btn').bind('click', function() { close_dialog(); });
$('#overlay').bind('click', function() { close_dialog(); });
} else {
alert('An error has occured');
}
});
}
});
//-------------------------------------------
$('.buttn').bind('click', function() { show_order_form(''); });
$('.buttn_a').bind('click', function() { show_akcia_form(''); });
$('.close').bind('click', function() { close_dialog(''); });
$('#overlay').bind('click', function() { close_dialog(); });
$('.close2').bind('click', function() { close_dialog2(''); });
//---------------------------------------------------
$('form .send').click(function() {
var parent = $(this).parent('form');
var errors = false;
_name = $(parent).find('#name');
_phone = $(parent).find('#phone');
_form = $(parent).find('#hidestring')
name = $(_name).val();
phone = $(_phone).val();
form = $(_form).text();
if (phone.length == 0)
{
alert('Заполните, пожалуйста поля');
errors = true;
}
else if (phone.length < 7)
{
errors = true;
alert('Проверьте, пожалуйста, корректность заполнения формы. Введите Ваш номер телефона в виде +7-888-777-55-33');
}
else if (phone.length > 16)
{
errors = true;
alert('Проверьте, пожалуйста, корректность заполнения формы. Введите Ваш номер телефона в виде +7-888-777-55-33');
}
digits="0123456789+-() "
for(i=0; i<1; i++)
if (digits.indexOf(phone.charAt(i))<0)
{alert("Это должны быть цифры")
document.dataentry.phone.focus()
break
}
if (!errors)
{
$(_name).val('');
$(_phone).val('');
$('#forma').hide();
$.post("sendmessage.php",
{ ajax: 'yes', form: form, name: name, phone: phone },//, content: content, model: model },
function(returned) {
if (returned == 'true') {
$('#thanks').center();
$('#thanks').show();
$('.close_btn').bind('click', function() { close_dialog(); });
$('#overlay').bind('click', function() { close_dialog(); });
} else {
alert('An error has occured');
}
});
}
});
});
var show_order_form = function(text){
var overlay = $('<div>').attr('id', 'overlay');
overlay.appendTo(document.body);
$('.form_backcall').center();
$('.form_backcall').show();
$('.close_btn').bind('click', function() { close_dialog(); });
$('#overlay').bind('click', function() { close_dialog(); });
}
var show_akcia_form = function(text){
var overlay = $('<div>').attr('id', 'overlay');
overlay.appendTo(document.body);
$('.form_akcia').center();
$('.form_akcia').show();
$('.close_btn').bind('click', function() { close_dialog(); });
$('#overlay').bind('click', function() { close_dialog(); });
}
var show_thanks = function(text){
var overlay = $('<div>').attr('id', 'overlay');
overlay.appendTo(document.body);
$('#thanks').center();
$('#thanks').show();
$('.close_btn').bind('click', function() { close_dialog(); });
$('#overlay').bind('click', function() { close_dialog(); });
}
так вот все формы работают коректно кроме одной $('.send_audit').click(function() ....
когда кликаю на кнопку отправки должен по идеи выдавать ошибку (что и происходит в других формах, за которые отвечает нижняя функция $('form .send').click(function() ...), но ничего не происходит, а отладчик рисует ошибку:
Uncaught TypeError: Cannot read property 'length' of undefined [VM] js.js (943):41
я не пойму в чем дело, хотя сотни раз использовал этот скрипт - все было нормально. Подскажите в чем причина...
вот код проблемной формы
<form>
<p>ЗАПИШИТЕСЬ НА БЕСПЛАТНЫЙ АУДИТ! </p>
<div id="hidestring">"БЕСПЛАТНЫЙ АУДИТ!"</div>
<div style=" margin:auto; width:220px">
<input type="text" name="name" id="name" placeholder="Имя * " />
<input type="text" name="email" id="email" placeholder="E-mail "/>
<input type="text" name="phone" id="phone" placeholder="Телефон * " />
<input type="text" name="ahref" id="ahref" placeholder="Ссылка на сайт * "/>
<img src="images/send_btn.png" style=" margin:10px 0 0 0; cursor:pointer;" alt="Отправить" title="Отправить" class="send_audit" />
</div>
</form>