Вход

Просмотр полной версии : Событие onchange не вызывает функцию


mr.bl
16.04.2013, 01:01
Есть 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 = "Пароли не совпадают";
}
}