|
|
|
Что с кодом не так?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! У меня есть поле, в которое пользователем записывается его имя. У меня есть постоянное выражение, которое проверяет поля на ввод только русских букв. Теперь к проблеме. Если после ошибочного ввода пользователь вводит все правильно потом переходит на другое поле то, а потом нажимает на это поле, то все что там написано сбрасывается. а мне это не надо. вот код: <form > <b>Ваше имя:</b><br> <input type="text" name="client" size="20" class="client"><br> <b>Ваш номер телефона:</b><br> <input type="text" name="phone" class="phone"><br> <script> $(document).ready(function(){ var suc=0; $(".phone").change(function () { var sac=0; var re = /^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/; var myPhone = $(".phone").val(); var valid = re.test(myPhone); if (!valid || $(".phone").val().length>11 || $(".phone").val().length<11) {$(".phone").val('Номер введен неправильно!'); $(".phone").css({"color":"red","box-shadow":" inset 0px 0px 14px red"}); sac=1; phoneclear(sac); sac=0;} }); $(".client").change(function () { var re = /^[а-яА-ЯёЁ]+$/; var myName = $(".client").val(); var valid = re.test(myName); if (!valid ) {$(".client").val('Имя введено некорректно!'); $(".client").css({"color":"red","box-shadow":" inset 0px 0px 14px red"}); suc=1; nameclear(suc); suc=0;} }); function nameclear(elclin){ $(".client").click( function () { if (elclin==1){ $(".client").val('').css({"color":"black","box-shadow":" inset 0px 0px 14px green"}); } }); console.log(elclin); } function phoneclear(elph){ if (elph==1){$(".phone").click( function () {$(".phone").val('');$(".phone").css({"color":"black","box-shadow":" inset 0px 0px 14px green"}); }); } } }); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:09 |
|
||
|
Что с кодом не так?
|
|||
|---|---|---|---|
|
#18+
Подскажите в чем ошибка? Или как это сделать по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:10 |
|
||
|
Что с кодом не так?
|
|||
|---|---|---|---|
|
#18+
GadbulПодскажите в чем ошибка? Или как это сделать по-другому? - Код ведет себя как написан. Логика работы неправильная - разбирайтесь. Всё наглядно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:10 |
|
||
|
Что с кодом не так?
|
|||
|---|---|---|---|
|
#18+
Gadbul, значение поля сбрасывается потому что ты запрограммировал такую логику. В случае ошибки на поля навешивается обработчик события click очищающий поле который остается там "навсегда". Я бы переделал логику валидации т.к. удаление введенного пользователем значения это плохая идея. Человек случайно печает лишную цифру в номере телефона или вводит не русскую букву в имени и то что он ввел полностью теряется. Выводи сообщение рядом с полем или оставь только подсветку неправильного поля. Gadbulvar myPhone = $(".phone").val(); var valid = re.test(myPhone); if (!valid || $(".phone").val().length>11 || $(".phone").val().length<11) {$(".phone").val('Номер введен неправильно!'); $(".phone").css({"color":"red","box-shadow":" inset 0px 0px 14px red"}); Это плохой код. Во-первых, ты постоянно читаешь значения поля когда это можно было сделать один раз. Во-вторых, вместо повторения $(".phone") лучше написать $(this) чтобы было меньше повторений селектора. В-третьих, условие length>11 || length<11 можно записать как length!=11, а еще лучше вообще его убрать т.к. длина задана в регулярном выражении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:13 |
|
||
|
|

start [/forum/topic.php?fid=22&gotonew=1&tid=1445694]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 515ms |

| 0 / 0 |
