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, время: 05:08. |