submit только после второго клика
Доброго всем времени суток. Вообщем вот такой код
var name;
var email;
var phone;
function nameChange(element,timeOut)
{
clearTimeout(this.tOut);
this.tOut=setTimeout(function(){
$('#userName').removeClass();
var nameV = $('#userName').val();
var nameLngth = $('#userName').val().length;
var filterName = /^[a-zа-я]+$/i;
if(filterName.test(nameV)&& nameLngth > 2)
{
$('#userName').addClass('valid');
$('#userName').prev().text('');
name=1;
if(name==1)
{
$('#submit').html('<a href="javascript: void(0)" onclick="formSend.submit()">Заказать</a>');
}
}
else
{
$('#userName').addClass('notValid');
$('#userName').prev().text('Имя может содержать только буквы и быть не короче 3-х знаков');
$('#submit').html('<ins>Заказать</ins><br><font color=\"red\">Не заполнено </font>');
name='';
}
});
}
jQuery(function(){
$('.text').val('');
var nameLngth = $('#userName').val().length;
if(nameLngth <= 1)
{
$('#submit').html('<ins>Заказать</ins><br><font color=\"red\">Не заполнено... </font>');
}
$('#userName').blur(function(){
$('#userName').removeClass();
var nameV = $('#userName').val();
var nameLngth = $('#userName').val().length;
var filterName = /^[a-zа-я]+$/i;
if(filterName.test(nameV)&& nameLngth > 2)
{
$('#userName').addClass('valid');
$('#userName').prev().text('');
name=1;
if(name==1)
{
$('#submit').html('<a href="javascript: void(0)" onclick="formSend.submit()">Заказать</a>');
}
}
else
{
$('#userName').addClass('notValid');
$('#userName').prev().text('Имя может содержать только буквы и быть не короче 3-х знаков');
name='';
$('#submit').html('<ins>Заказать</ins><br><font color=\"red\">Не заполнено...</font>');
}
});
});
</script>
<form method=POST action=cart.htm name=formSend ><input type=hidden name=step value=2>
<table width=100% border=0 cellspacing=0 cellpadding=0>
<tr>
<td width=50% align=left>Имя *</td>
<td width=50% align=right><div class="error"></div><INPUT type="text" name="name" maxlength="255" size="60" value="" class="text" id="userName" onkeyup="nameChange(this,100)"></td>
</tr><tr><td colspan=2 height=5></td></tr><tr>
<td width=50% align=left>Фамилия </td>
<td width=50% align=right><div class="error"></div><INPUT type="text" name="f_name" maxlength="255" size="60" value="" class="text" id="userFName"></td>
</tr><tr><td colspan=2 height=5></td></tr><tr><td></td><td aligh="right"><div id="submit" style="text-align:right;"></div></td></tr><script>
</script>
</table>
</form>
Проблема в том что если ссылка "Заказать" активируется по событию keyup то нажимать на неё нужно два раза. Т.е. хоть она и активировалась но всё равно нужно ждать blur. Понятно что огород нагородил, но уж не обезсутьте Подскажите в каком месте косяк. Заранее благодарен за вашу помощь. |
Сказать честно ...?
Код нужно выбросить в мусорное ведро Что это? О чем оно говорит? $('#userName').prev().text(''); name=1; if(name==1) { |
Мда...
Естественно он не будет при первом клике срабатывать т.к. ты ссылку при блюре перезаписываешь, куда ему кликать то. Зачем вообще это надо, если и так на keyup она перезапишется? И почему просто не повесить обработчик на событие input? Да и вообще что мешает финальную валидацию проводить прямо во время submit? Зачем вообще все эти манипуляции с перезаписью содержимого дива? Почему нельзя сделать нормальную кнопку и дисаблить ее? В общем, говнокод это, как он есть. |
Цитата:
Цитата:
Так лучше?
jQuery(function(){
$('.text').val('');
var nameLngth = $('#userName').val().length;
if(nameLngth <= 1)
{
$('#submit').html('<ins>Заказать</ins><br><font color=\"red\">Не заполненно...</font>');
}
$('#userName').on('input' ,function(){
$('#userName').removeClass();
var nameV = $('#userName').val();
var nameLngth = $('#userName').val().length;
var filterName = /^[a-zа-я]+$/i;
if(filterName.test(nameV)&& nameLngth > 2)
{
$('#userName').addClass('valid');
$('#userName').prev().text('');
$('#submit').html('<a href="javascript: void(0)" onclick="formSend.submit()">Заказать</a>');
}
else
{
$('#userName').addClass('notValid');
$('#userName').prev().text('Имя может содержать только буквы и быть не короче 3-х знаков');
$('#submit').html('<ins>Заказать</ins><br><font color=\"red\">Не заполненно...</font>');
}
});
});
Цитата:
jsnb за инпут спасибо, всё получилось. Проверку по сабмиту не устраивала, изначально так и было. Нужно именно "на лету". Изврат с перезаписью дива уберу. Изначально делал с кнопкой, думал с ней что не так. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 18:34. |