Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Событие onchange не вызывает функцию (https://javascript.ru/forum/misc/37330-sobytie-onchange-ne-vyzyvaet-funkciyu.html)

mr.bl 16.04.2013 01:01

Событие onchange не вызывает функцию
 
Есть reg.js:
function regv(polename,polename2) { //проверка сервером любого поля
	var value = document.getElementById(polename).value;
	if(polename2) value2=document.getElementById(polename2).value;
	else polename2=polename;
	var xmlhttp = getXmlHttp();
	xmlhttp.open('POST', '../regv.php', true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	if(polename2 != polename) xmlhttp.send(encodeURIComponent(polename) + "o=" + encodeURIComponent(value) + "&" +encodeURIComponent(polename2) + "=" + encodeURIComponent(value2));
	else xmlhttp.send(encodeURIComponent(polename) + "=" + encodeURIComponent(value));
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if(xmlhttp.status == 200) {
				if(xmlhttp.responseText != 0) {
					document.getElementById(polename2 + "_error").innerHTML = xmlhttp.responseText;
				} else {
					document.getElementById(polename2 + "_error").innerHTML = " ";
				}
			}
		}
	};
};

function pasve() { //локальная проверка совпадения пароля
	var pas1 = document.getElementById('pas').value;
	var pas2 = document.getElementById('pasv').value;
	if ( pas1 == pas2 ) {
		document.getElementById("pasv_error").innerHTML = " ";
	} else {
		document.getElementById("pasv_error").innerHTML = "Пароли не совпадают";
	} 
};


На страничке стоит два input'a:
<input type="password" id="pas" name="pas" size="22" required onchange="regv('pas');"><br>
<div id="pas_error" class="error_reg"> </div>
<input type="password" id="pasv" name="pasv" size="22" required onchange="regv('pas','pasv');">
<div id="pasv_error" class="error_reg"> </div>

Если onchange="regv('pas','pasv');", то все работает. А если onchange="pasve();", то функция не вызывается.

В чем может быть проблема?
p.s. <a href="#" onclick="pasve();">a</a> работает.

rgl 16.04.2013 12:05

Ищите ошибку в функции regv() (да-да, именно в ней). Для начала закомментарьте ее полностью и посмотрите будет ли вызываться pasve(), если да, то потом по кусочкам разкомментаривайте первую функцию, и увидите когда появляется проблема.

mr.bl 16.04.2013 12:31

rgl, я пробовал закомментировать regv, не помогло.
С проблемой я разобрался, но причины так и не понял.
переписал строчку function pasve() {, вроде бы все буква в букву, но теперь работает...
function pasve() {
	var pas1 = document.getElementById('pas').value;
	var pas2 = document.getElementById('pasv').value;
	if ( pas1 == pas2 ) {
		document.getElementById("pasv_error").innerHTML = " ";
	} else {
		 document.getElementById("pasv_error").innerHTML = "Пароли не совпадают";
	}
}


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