Pessoal, boa tarde.
Estou usando as validações automáticas do Validator num projeto no qual estou participando. Pois bem, a validação no lado do servidor esta funcionando sem problemas. O problema é o JavaScript que ele gera no lado cliente.
Configurei o validator.xml para fazer validações no campo do meu form, usando a regra “required”.
Coloquei na minha página a tag para geração do JavaScript. Ele gerou o javaScript.
Nas minhas funções JavaScripts que cuidam de realizar o submit para minhas actions, coquei a seguinte validação:
if (validateCadastroForm(this)) {
window.document.cadastroForm.action = "${actionPagina}";
window.document.cadastroForm.submit();
}
O problema é que na hora de executar esta validação, os browsers (testei nas ultimas versões do FireFox e Internet Explorer) retorna o seguinte erro:
Erro: form.getAttributeNode is not a function
Arquivo-fonte: http://localhost:8080/Sistema/manterCadastroAlterar.do
Linha: 286
Segue abaixo o código javaScript da função aonde está dando o erro:
/*$RCSfile: validateRequired.js,v $ $Revision: 1.13 $ $Date: 2004/03/28 16:53:21 $ */
/**
* Check to see if fields must contain a value.
* Fields are not checked if they are disabled.
* <p>
* @param form The form validation is taking place on.
*/
function validateRequired(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
var formName = form.getAttributeNode("name");
oRequired = eval('new ' + formName.value + '_required()');
for (x in oRequired) {
var field = form[oRequired[x][0]];
if ((field.type == 'hidden' ||
field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'file' ||
field.type == 'checkbox' ||
field.type == 'select-one' ||
field.type == 'password') &&
field.disabled == false) {
var value = '';
// get field's value
if (field.type == "select-one") {
var si = field.selectedIndex;
if (si >= 0) {
value = field.options[si].value;
}
} else if (field.type == 'checkbox') {
if (field.checked) {
value = field.value;
}
} else {
value = field.value;
}
if (trim(value).length == 0) {
if (i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid = false;
}
} else if (field.type == "select-multiple") {
var numOptions = field.options.length;
lastSelected=-1;
for(loop=numOptions-1;loop>=0;loop--) {
if(field.options[loop].selected) {
lastSelected = loop;
value = field.options[loop].value;
break;
}
}
if(lastSelected < 0 || trim(value).length == 0) {
if(i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid=false;
}
} else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {
isChecked=-1;
for (loop=0;loop < field.length;loop++) {
if (field[loop].checked) {
isChecked=loop;
break; // only one needs to be checked
}
}
if (isChecked < 0) {
if (i == 0) {
focusField = field[0];
}
fields[i++] = oRequired[x][1];
isValid=false;
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return isValid;
}
Pelo que notei praticamente todas as funções java Scripts fazem referência a função form.getAttributeNode.
Como resolvo este problema? Esqueci de declarar alguma coisa? Algum arquivo de JavaScript?
