[RESOLVIDO] Richfaces - Atualizar função javascript com reRender ou algo similar

3 respostas
rfsilva

Olá a tod@s!!!

Estou enfrentando um problema em relação a uma função javascript.
Tenho uma função javascript que utiliza dois parâmetros vindos do bean. Até aí tudo bem. O problema é que os valores dos parâmetros pode mudar dependendo do que o usuário fizer, e aí eu preciso que essa função javascript passe a utilizar esses valores atualizados. Trata-se de habilitar/desabilitar dias do rich:calendar. Segue abaixo a função javascript:

function isDayEnabled(day) {
	   var data = new Date(day.date);
	   var minimo = new Date((new Date()).getTime() - (#{apontamentoMBean.minimo} * 24 * 60 * 60 * 1000));
	   var maximo = new Date((new Date()).getTime() + (#{apontamentoMBean.maximo} * 24 * 60 * 60 * 1000));
	   
	   var dataMillis = data.getTime();
	   var minimoMillis = minimo.getTime();
       var maximoMillis = maximo.getTime();
	   
	   if (dataMillis > maximoMillis) {
	       return false;
	   }
	   if (dataMillis < minimoMillis) {
	       return false;
	   }
	   return true;
	}

Há alguma forma de atualizar essa função (reRender ou algo do tipo) para que ele passe a utilizar os novos valores configurados nos parâmetros?

Obrigado!
Rodrigo

3 Respostas

H

Você pode chamar sua função javascript no oncomplete.

Espero ter ajudado.

L

Não é mais fácil alterar a assinatura da função para receber o mínimo e o máximo, tipo assim:

function isDayEnabled(day, min, max) { var data = new Date(day.date); var minimo = new Date((new Date()).getTime() - (min * 24 * 60 * 60 * 1000)); var maximo = new Date((new Date()).getTime() + (max * 24 * 60 * 60 * 1000)); ... }

Ou pegar os valores os campos via DOM:

function isDayEnabled(day) { var data = new Date(day.date); var min = document.getElementById("form:min").value; var max = document.getElementById("form:max").value; var minimo = new Date((new Date()).getTime() - (min * 24 * 60 * 60 * 1000)); var maximo = new Date((new Date()).getTime() + (max * 24 * 60 * 60 * 1000)); ... }

rfsilva

henriquejhc:
Você pode chamar sua função javascript no oncomplete.

Espero ter ajudado.

Oi henriquejhc, eu tentei essa solução, mas como o javascript estava com o valor estático (mesmo passando por bean), não funcionou.

lsjunior, sua dica me ajudou pacas, funcionou usando DOM!!!

Valeu, brigadão!!!

Criado 30 de novembro de 2011
Ultima resposta 30 de nov. de 2011
Respostas 3
Participantes 3