Entao nbluis, não sei pq o jsf ou o seam estão interpretando de maneira incorreta caracteres como > ou <, somente funciona com o != mesmo, de repente eu preciso utilizar um > ou <, vou fazer esse teste depois já que testei o javascript todo e está funcionando.
Fiz algumas alterações e mudei ele para:
var listaBotoes = new Array();
var botaoJaFoiClicado = false;
function desabilitarBotaoSubmit(button, form){
var i = 0;
var botoes = listaBotoes.toString();
var existeBotaoArray = botoes.match(button.name);
if(existeBotaoArray == null){
if(listaBotoes.length == 0){
listaBotoes[0] = button.name;
} else if(listaBotoes.length == 1){
listaBotoes[1] = button.name;
} else if(listaBotoes.length == 2){
listaBotoes[2] = button.name;
}
}
for(i=0; i != listaBotoes.length; i++){
if(listaBotoes[i] == button.name){
if(botaoJaFoiClicado == false){
botaoJaFoiClicado = true;
button.value='Aguarde!';
button.disable=true;
document.forms[form].submit();
return true;
} else {
alert ("Aguarde!");
return false;
}
}
}
}
Essa função funciona perfeitamente para quem quiser utilizar JSF e não permitir que seja realizado um duplo clique e ainda adiciona todos os botões já clicados.
Só estou com uma dúvida: existe alguma outra maneira de eu adicionar objetos no array sem precisar passar o número da posição? Pq tenho páginas que tem uma porrada de botões e fica complicado criar outro javascript só para isso! hehe
var listaBotoes = new Array();
var botaoJaFoiClicado = false;
var contadorBotoes = 0;
function desabilitarBotaoSubmit(button, form){
var i = 0;
var botoes = listaBotoes.toString();
var existeBotaoArray = botoes.match(button.name);
if(existeBotaoArray == null){
listaBotoes[contadorBotoes] = button.name;
contadorBotoes++;
}
for(i=0; i != listaBotoes.length; i++){
if(listaBotoes[i] == button.name){
if(botaoJaFoiClicado == false){
botaoJaFoiClicado = true;
button.value='Aguarde!';
button.disable=true;
document.forms[form].submit();
return true;
} else {
alert ("Aguarde!");
return false;
}
}
}
}
Essa seria a melhor maneira ou tem alguma outra mais elegante?
[]'s
Após esses ajustes, existem certos botões que estão me lançando a exceção:
Existe alguma maneira de evitar isso? E isso só ocorre na primeira vez que é realizado o duplo clique, nas próximas funcionam normalmente e independente de quantos cliques forem efetuados.