EVENTOS AJAX - ONFOCUS

Estou desenvolvendo um formulário onde tenho que preencher um Campo através do Evento ONFOCUS, O script está certinho, mais ele não preenche o Campo… Engraçado que coloquei pra exibir uma mensagem e funciona direitinho, mais não preenche o campo, abaixo um exemplo do código:

este código faz o seguinte:

Ele pega o valor que vem do campo {MedFrente}, ele escreve por extenso em metros quadrados e preenche o campo {MedFrenteExtenc} no evento OnFocus. o script está funcionando direito, pois eu testei exibindo a mensagem, mais não está preenchendo o campo, alguem sabe me informar o porque????

$valor={MedFrente};
$maiusculas=true;

// verifica se tem virgula decimal
if (strpos($valor,",") > 0)
{
  // retira o ponto de milhar, se tiver
  $valor = str_replace(".","",$valor);

  // troca a virgula decimal por ponto decimal
  $valor = str_replace(",",".",$valor);
}

$singular = array(“centimetro”, “metro quadrado”, “mil”, “milhão”, “bilhão”, “trilhão”, “quatrilhão”);
$plural = array(“centimetros”, “metros quadrados”, “mil”, “milhões”, “bilhões”, “trilhões”,
“quatrilhões”);

$c = array("", “cem”, “duzentos”, “trezentos”, “quatrocentos”,
“quinhentos”, “seiscentos”, “setecentos”, “oitocentos”, “novecentos”);
$d = array("", “dez”, “vinte”, “trinta”, “quarenta”, “cinquenta”,
“sessenta”, “setenta”, “oitenta”, “noventa”);
$d10 = array(“dez”, “onze”, “doze”, “treze”, “quatorze”, “quinze”,
“dezesseis”, “dezesete”, “dezoito”, “dezenove”);
$u = array("", “um”, “dois”, “três”, “quatro”, “cinco”, “seis”,
“sete”, “oito”, “nove”);

    $z=0;

    $valor = number_format($valor, 2, ".", ".");
    $inteiro = explode(".", $valor);
	$cont=count($inteiro);
	        for($i=0;$i<$cont;$i++)
            for($ii=strlen($inteiro[$i]);$ii<3;$ii++)
            $inteiro[$i] = "0".$inteiro[$i];

    $fim = $cont - ($inteiro[$cont-1] > 0 ? 1 : 2);
    for ($i=0;$i<$cont;$i++) {
            $valor = $inteiro[$i];
            $rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
            $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
            $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";

            $r = $rc.(($rc && ($rd || $ru)) ? " e " : "").$rd.(($rd &&

$ru) ? " e " : “”).$ru;
$t = $cont-1-$i;
$r .= $r ? " ".($valor > 1 ? $plural[$t] : $singular[$t]) : “”;
if ($valor == “000”)$z++; elseif ($z > 0) $z–;
if (($t==1) && ($z>0) && ($inteiro[0] > 0)) $r .= (($z>1) ? " de " : “”).$plural[$t];
if ($r) $rt = $rt . ((($i > 0) && ($i <= $fim) &&
($inteiro[0] > 0) && ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : " ") . $r;
}

{MedFrenteExtenc} =$rt;

sc_ajax_message($rt, ‘Extenso Valor’);

o campo é numérico ou String?

O campo que vai receber é string.

hum, pensei que tivesse deixado como Numero, mais ja que é Texto não sei qual o problema.

Ja tendou da um “echo” na variavel pra debugar?

quando eu coloco o echo ele da erro “T_ECHO”, eu uso “sc_ajax_message($rt, ‘Extenso Valor’);” e o script tá certinho, eu fiz vários testes e as mensagens que ele exibe está certinho… O Problema é quando eu vou preencher o campo do FORM “{MedFrenteExtenc} =$rt;”:

Ex:

 O Campo do FORM: {MedFrente} é um Campo Decimal eu preencho ele com um valor "10,50", no evento onFocus do campo "{MedFrenteExtenc}" que é uma string, ele deveria preencher este campo após executar o script "DEZ METROS QUADRADOS E CINQUENTA CENTIMETROS", para debug eu coloquei o script "sc_ajax_message($rt, 'Extenso Valor');" ela me mostra certo na mensagem... o Problema é quando eu vou passar o valor da variável "$rt" para o campo "{MedFrenteExtenc} =$rt;" ela não atualiza o campo do form e também não da erro.

Carlos, eu não revisei seu código, então estou assumindo que está tudo certo, eu já tive muitos problemas com Eventos Ajax Onfocus que não funciona sem explicação, ai então eu faço o uso do Onchange no campo que recebeu o valor inicial em conjunto com Onfocus no campo que receberá o resultado.

Claro que seria interessante descobrir porque o Onfocus se recusa a funcionar muitas vezes, mas essa dica deve resolver.