Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.251.37] |
|
Сообщ.
#1
,
|
|
|
У меня на форме несколько вкладок, и я перед отправкой проверяю корректность введённых данных.
в случае, если что то не так, я вывожу alert. перед alert-том пытаюсь переключить вкладку и передать фокус нужному полю - работает, но после alert. пробовал разные варианты, но либо alert вообще не показывается (settimeout), либо всё продолжает работать асинхронно. function CheckItem(ID,pattern,field,tab) { var item=document.getElementById(ID); if ((item.value.search(pattern)==-1) & (item.value!="")) { TabClick(tab); item.focus(); alert('В поле "' + field + '" введены некорректные данные'); //settimeout("alert('ddd');",500); } else { return true; } } PS От использования паттерна в самих полях пришлось отказаться, поскольку если находишься не на той вкладке, кнопка submit не реагирует на события. |
Сообщ.
#2
,
|
|
|
Честно я не понял ничего, CheckItem где вызывается?
запости сюда весь код Добавлено Цитата Alexanbar @ перед alert-том пытаюсь переключить вкладку и передать фокус нужному полю - работает, но после alert. Что после алерт? Не работает? А что должно работать? Короче нормально изъясняйся, а то как не русский |
Сообщ.
#3
,
|
|
|
Цитата Cfon @ Честно я не понял ничего, CheckItem где вызывается? Вызывается через onsubmit Цитата Cfon @ Что после алерт? Не работает? А что должно работать? Вкладка переключается, фокус передаётся, но ПОСЛЕ а не ДО alert. Т.е. при обнаружении некорректного ввода вначале я вижу alert, а потом переключается вкладка. <form action="AddTrack.php" method="post" onsubmit="SetChange(this); return false;" enctype="multipart/form-data"> ..... </form> function SetChange(obj) { if (CheckData()) { ...... obj.submit(); } } function CheckData(){ if (!CheckItem("i_tNum",/\d+/,"№",0)) { return;}; .... if (!CheckItem("i_txtDuration",/\d{1,2}:[0-5]?[0-9]:[0-5]?[0-9]/,"Длительность",3)) { return;}; return true; } function CheckItem(ID,pattern,field,tab) { var item=document.getElementById(ID); if ((item.value.search(pattern)==-1) & (item.value!="")) { TabClick(tab); item.focus(); alert('В поле "' + field + '" введены некорректные данные'); } else { return true; } } function TabClick(Tab){ if (CurTab!=Tab) { document.getElementById("tab" + CurTab).setAttribute("class","tab"); document.getElementById("div" + CurTab).style.display="none"; CurTab=Tab; document.getElementById("tab" + CurTab).setAttribute("class","seltab"); document.getElementById("div" + CurTab).style.display="block"; } } |
Сообщ.
#4
,
|
|
|
вот теперь я понял, но хз через
setTimeout(function () { alert('Error'); }, 500); должно работать, можешь еще промисы прикрутить или async/await. |
Сообщ.
#5
,
|
|
|
Цитата Cfon @ вот теперь я понял, но хз через setTimeout(function () { alert('Error'); }, 500); должно работать, можешь еще промисы прикрутить или async/await. Работает. Можно даже 0 ставить Экспериментально оптимально где то 50 |