Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Появление кнопки при успешной валидации (https://javascript.ru/forum/misc/26647-poyavlenie-knopki-pri-uspeshnojj-validacii.html)

bpystep 16.03.2012 13:25

Появление кнопки при успешной валидации
 
есть вот такой скрипт:

function regular(reg, flags, nValue) {
	var myReg = new RegExp (reg, flags);
	if (myReg.exec(nValue)) return true;
	else return false;
}

function validation(node) {
	if (node.name == 'login') {
		var reg = "^[\.\s 0-9a-zA-Z_-]+$";
		var flags = "";
		var p = regular(reg, flags, node.value);
		if (p) {
			node.style.color = "#00ff00";
			document.all.tr5.cells[2].innerText="";
		}
		else {
			node.style.color = "#ff0000";
			document.all.tr5.cells[2].innerText="допустимы латинские символы, цифры, подчеркивание, тире, точка, пробел";
			document.all.tr5.cells[2].style.color="#ffff00";
		}	
	}
if (//что здесь) {
		document.all.button.cells[0].innerHTML="<input type='submit' name='sub_register' value='Зарегистрироваться'>";
	}


<tr id="tr5">
	<td>Логин</td>
	<td><input onChange="validation(this)" type="text" size="10" name="login"></td>
	<td></td>
</tr>


как сделать чтобы при успешном прохождении regular() появилась кнопочка "Зарегистрироваться"?

п.с. есстественно логин не единственный параметр который вызывает regular().

karmis 17.03.2012 15:02

всегда делаю флаг с ошибками и затем проверяю ..
изначально кнопка скрыта.
Если ошибки есть -- ничего не меняю, иначе показать кнопку

bpystep 17.03.2012 16:44

можно поподробнее с флагом, я так понимаю что вы имеете в виду чтото типа этого:
if (p) {
            node.style.color = "#00ff00";
            document.all.tr5.cells[2].innerText="";
            var flag = true;
        }
        else {
            node.style.color = "#ff0000";
            document.all.tr5.cells[2].innerText="допустимы латинские символы, цифры, подчеркивание, тире, точка, пробел";
            document.all.tr5.cells[2].style.color="#ffff00";
            var flag = false;
        }
}
if (flag) {
        document.all.button.cells[0].innerHTML="<input type='submit' name='sub_register' value='Зарегистрироваться'>";
    }


но я
ту функцию буду вызывать не только для проверки логина, еще и для других полей регистрации, и флаг будет работать только для данного поля, а в проверки же должно быть и для остальных полей. или я не так понял?

karmis 17.03.2012 17:22

если не очень красиво -- то много флагов
если красивее -- то можно массив с ошибками
если для ленивых -- то можно валидатор на том же jQuery

я лично делаю так

var error=0;
function validator(value)
   {
   если есть ошибки
     error=1;
     прячем кнопку
иначе
    error=0;
    показываем кнопку
   }

<input type='text' id='login' onblur="validator(this.value)">
<input type='text' id='pass' onblur="validator(this.value)">
<input type='text' id='name' onblur="validator(this.value)">
...


Часовой пояс GMT +3, время: 10:53.