Ir para conteúdo
Fórum Script Brasil

leocello

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que leocello postou

  1. Olá mano, me desculpe pela demora ao responder. vou postar os códigos, com algumas explicações dos arquivos: Arquivo: ajax.js Este arquivo contém as funções que abrem o conteúdo via ajax. Não postei o arquivo inteiro, pois não é necessário. Afunção getScriptAjax() somente serve para pegar arquivos que contenham somente códigos em Javascript. No arquivo tem uma outra função que pega conteúdos de arquivos HTML. function ajaxobj() { try { _ajaxobj = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { _ajaxobj = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { _ajaxobj = false; } } if (!_ajaxobj && typeof XMLHttpRequest!='undefined') { _ajaxobj = new XMLHttpRequest(); } return _ajaxobj; } function getScriptAjax(arquivo,params,div,method) { var Ajax; var conteudo; conteudo = ''; Ajax = ajaxobj(); Ajax.open(method, arquivo, true); Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1"); Ajax.onreadystatechange=function() { if (Ajax.readyState == 4) { // Mostramos o conteúdo var res = Ajax.responseText; res = unescape(res); var oScript = document.createElement('script'); oScript.type = 'text/javascript'; oScript.text = res; document.getElementsByTagName("body").item(0).appendChild(oScript); } else { } }; Ajax.send(params); } Arquivo: acoes.js Este arquivo contém as funções que, utilizando as funções do arquivo ajax.js, coloca os conteúdos nas páginas. function novo(idtabela) { getAjax("pages/dados/novo.phtml","tabela="+idtabela+"&id=0","dados","POST"); getAjax("pages/dados/topo.phtml","acao=novo&tabela="+idtabela+"&id=0","topo_dados","POST"); getScriptAjax("pages/dados/validacao.phtml","tabela="+idtabela+"&id=0","scripts","POST"); } Arquivo validacao.phtml Este arquivo contém somente os scripts gerados para cada formulário do sistema. Estes scripts são gerados de acordo com um arquivo XML que contém as informações de cada campo de cada formulário. Os scripts gerados por esta página são scripts de validação de campos utilizando SPRY. <?php //Arquivo de configuração com o AutoLoad das classes require_once('../../config.php'); $bd_local = new BD_Conexao('local'); //Recebe as variáveis POST $tabela = $_POST['tabela']; $id = $_POST['id']; if(file_exists('../../xml/forms/'.$tabela.'.xml')) { // Lê o arquivo XML Forms.XML $xml = simplexml_load_file('../../xml/forms/'.$tabela.'.xml'); foreach($xml->item as $item) { if($item->id == $tabela) { foreach($item->campo as $campo) { if($campo->tipo != 'titulo') { // Inicia as variáveis $nome = $campo->nome; $tipo = $campo->tipo; $tag = $campo->tag; $necessario = $campo->necessario; $atributos = 'isRequired:'.$necessario.', '; // Tag INPUT if($tag == 'input') { // Tipos // Tipo Texto if($tipo == 'texto') { $spry_tipo = 'none'; } // Tipo RG elseif($tipo == 'rg') { $spry_tipo = 'custom'; $atributos .= 'format:"custom", '; $atributos .= 'pattern:"00.000.000-0", '; $atributos .= 'hint:"__.___.___-_", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo CPF elseif($tipo == 'cpf') { $spry_tipo = 'custom'; $atributos .= 'format:"custom", '; $atributos .= 'pattern:"000.000.000-00", '; $atributos .= 'hint:"___.___.___-__", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo Data elseif($tipo == 'data') { $spry_tipo = 'date'; $atributos .= 'format:"dd/mm/yyyy", '; $atributos .= 'hint:"__/__/____", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo CEP elseif($tipo == 'cep') { $spry_tipo = 'custom'; $atributos .= 'format:"custom", '; $atributos .= 'pattern:"00000-000", '; $atributos .= 'hint:"_____-___", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo Inteiro elseif($tipo == 'inteiro') { $spry_tipo = 'integer'; $atributos .= 'useCharacterMasking:true, '; } // Tipo Telefone elseif($tipo == 'telefone') { $spry_tipo = 'phone_number'; $atributos .= 'format:"phone_custom", '; $atributos .= 'pattern:"(00) 0000-0000", '; $atributos .= 'hint:"(__) ____-____", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo Email elseif($tipo == 'email') { $spry_tipo = 'email'; $atributos .= 'useCharacterMasking:true, '; } // Tipo SKU2 elseif($tipo == 'sku2') { $spry_tipo = 'custom'; $atributos .= 'format:"custom", '; $atributos .= 'pattern:"XX", '; $atributos .= 'hint:"__", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo SKU3 elseif($tipo == 'sku3') { $spry_tipo = 'custom'; $atributos .= 'format:"custom", '; $atributos .= 'pattern:"XXX", '; $atributos .= 'hint:"___", '; $atributos .= 'useCharacterMasking:true, '; } // Tipo SKU13 elseif($tipo == 'sku13') { $spry_tipo = 'none'; $atributos .= 'minChars:1, '; $atributos .= 'maxChars:3, '; $atributos .= 'useCharacterMasking:true, '; } // Outros else { $spry_tipo = 'none'; } // Coloca a validação onblur $atributos .= 'validateOn:["blur"]'; // Monta o script echo 'var spry_'.$nome.' = new Spry.Widget.ValidationTextField("spry_'.$nome.'", "'.$spry_tipo.'", {'.$atributos.'}); '; } elseif($tag == 'select') { echo 'var spry_'.$nome.' = new Spry.Widget.Validationselect("spry_'.$nome.'", {'.$atributos.'validateOn:["blur"], invalidValue:"-1"}); '; } elseif($tag == 'textarea') { echo 'var spry_'.$nome.' = new Spry.Widget.ValidationTextarea("spry_'.$nome.'", {'.$atributos.'validateOn:["change","blur"], counterType:"chars_count", counterId:"count_'.$nome.'", useCharacterMasking:false, additionalError: "additionalErrorsZone"}); '; } } } } } } ?> Os outros arquivos usados são: um arquivo que coloca os campos em HTML na página, um arquivo XML que tem os dados dos campos e um outro arquivo que chama a função javascript (novo()) para exibir os dados do formulário. A questão é que ele não executa os scripts em Javascript todas as vezes que acesso os formulártios. O mesmo formulário, as vezes funciona e as vezes não funciona. Já tentei fazer de algumas outras formas, inclusive utilizando eval(), mas não rolou. Uma coisa intrigante é que se eu coloco um alert() no começo do código ele funciona tudo normal, sem problema nenhum. Mas eu não quero colocar um alert toda vez que o usuário acessa um formulário. Sabe o que pode ser? Obrigado. Um abraço
  2. Olá, Estou utilizando Ajax para colocar um conteúdo dentro de uma Div. Problema, em alguns casos, este conteúdo contém formulários, onde estou usando Spry para fazer a validação. Eu consegui fazer funcionar da seguinte maneira: Tenho o arquivo que contém os campos do formulário e outro arquivo que contém as funções do Spry que preciso chamar para fazer a validação. Esses arquivos são dinâmicos, pegando os dados dos campos e funções de um arquivo XML. Na função que coloca o conteúdo dentro da div de conteúdos, ele coloca os dados do formulário em uma div e os dados do script em uma tag script criada utilizando createElement(). Ele funciona, mas o problema é que só funciona as vezes. Não funciona sempre. O que pode ser que está acontecendo? Alguém pode me ajudar, por favor? Um abraço
×
×
  • Criar Novo...