Ir para conteúdo
Fórum Script Brasil

rutger2007

Membros
  • Total de itens

    36
  • Registro em

  • Última visita

Tudo que rutger2007 postou

  1. MisterViraLata... Deixa eu dar uma pequena luz a "vasta" explicação "isto é ajax"... quando a pessoa termina de digitar o nome, um campo NOME está preenchido... um javascript "LÊ" o valor digitado pelo cliente, processa este valor e então envia uma solicitação com ela como variavel ao servidor [POR TRÁS, SEM INTERFERÊNCIA DIRETA DO USUÁRIO] endereçado a um arquivo java, php, etc, que recebe a variável e busca nos BDs usando o nome [ou mais provável, um numero indice do fornecedor] e devolve ao javascript no cliente as informações, digamos em formato XML, que é então manipulado pelo javascript que completa o formulário com as informações enviadas através da manipulação do DOM... isto é ajax Filosoficamente o ajax é um misto de tecnologias [JS, DOM, XML. PHP, MYSQL, ETC...] que visa fornecer conteúdo rápido ao cliente, sem recarregar a página toda. Uma parte é feita no cliente pelo JS e DOM. Outra é no servidor, gerando conteudo mais rápido e com menos formato [você não precisa enviar todos aqueles echos / prints, etcs... basta montar e enviar as informações puras!]... e com isto você ganha agilidade e admiração de clientes como você! Espero que tenha lhe ajudado. Boa sorte!
  2. amigos... Eu estou "brincando" com o JS, querendo validar um campo de nome antes que o sujeito envie o form... catei alguns exemplos aqui mas como sempre quero ir mais além do que já tem... facilitar a vida dos nossos clientes é uma busca constante... olhe o codigo... <html> <head> <title>valida form</title> <script language="JavaScript"> function validateNome(nome) { if (typeof(nome) != "string") return false; else if (!nome.match(/^[A-Za-z]$/)) return false; return true; } function checkNome(obj) { var message = (validateNome(obj.value)) ? " " : " Apenas letras!"; document.getElementById("m_nome").innerHTML = message; } </script> </head> <body> <form name="cadastro" action="teste.php" method="post" > <table > <tr> <td>nome:</td> <td><input type="text" size="40" name="nome" id="nome" onChange="checkNome(this);"><span id="m_nome" style="color: #c00;"></span></td> </tr> <tr> <td colspan="2"> <div align="right"> <input name="enviar" type="submit" value="enviar"> </div> </td> </tr> </table> </form> </body> </html> BEM... FUNCIONA... quando alguém coloca algo diferente de letras no campo NOME, ele alerta que só vai aceitar letras [é para evitar "|| a=a" uma prevenção ao SQL injection!!!] e ao mesmo tempo evita erros de digitação... mas eu queria que ele TRAVASSE no campo... eu tentei usar um DOCUMENT.CADASTRO.NOME.FOCUS(), - ver abaixo - mas ainda passa ao campo seguinte... eu quero OBRIGAR o cara a digitar direito... TEM COMO??? function checkNome(obj) { var message = (validateNome(obj.value)) ? " " : " Apenas letras!"; document.getElementById("m_nome").innerHTML = message; document.cadastro.nome.focus(); }
  3. Oi allan... você é o único de plantão ai? hahaha... tks! seguinte... eu uso um include... templates.php é um arquivo separado, apenas com as variáveis string contendo o topo, a base, a navegação, mensagens de erro, etc... eu carrego ele na abertura do site [no servidor] e pronto... usado N vezes sem que o cliente perceba ou tenha de ser carregado n vezes... tudo para deixar a coisa mais rápida... e uso os echo ou print o nome da variavel para imprimir estes detalhes... costuma funcionar bem... no problema atual, não funcionou.... um outro amigo me sugeriu um INCLUDE ('MEUARQUIVO.JS'); no PHP que monta o form... isto é, incluir o JS já na hora de montar o form... não sei para que, mas foi o que faltou testar... obrigado assim mesmo! EDITADO DEPOIS... CLARO QUE NÃO FUNCIONOU... ENCHEU A TELA DE TEXTO CORRIDO SEM SENTIDO...E SUPERPOS O FORM EM CIMA!!! as vezes a gente faz as m... sem nem pensar... volto a bancada! rogério ALANNNNNN.... tem paulada via forum? cara não sei como fiz uma asneira destas... o JS tava funcionando bem, mas faz uma requisição ao servidor por um arquivo .PHP que estava fora do diretorio... nunca iria ser executada por falta de script né?? hahahahahaha... ok... RESOLVIDO!... Rogerio
  4. AMIGOS... seguinte... Monto vários forms usando PHP. Para simplificar, uso o mesmo template em todos. Para isto criei um arquivo template.php, e nele uma variavel chamada $topo. Abaixo o conteúdo desta variavel... $topoval=" <html> <head> <title>SIE/INICIO</title> <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> <link rel='stylesheet' href='siestl.css' type='text/css'> &lt;script type='text/javascript' src='mtfrm.js'></script> &lt;script type='text/javascript' src='crcdsc.js'></script> </head> <body> <div id='topo'><p>ÁREA DO ORGANIZADOR</p></div> <div id='main'> <div id='nav' > $nav </div> <div id='conteudo'> "; incluo então o template.php nos arquivos que montam os forms e chamo com echo $topo; em todos os forms, eu uso algum javascript para validar ou para alcançar algum efeito especifico, como requisitar algumas informações no servidor [ajax]... tudo está em &lt;script type='text/javascript' src='mtfrm.js'></script> &lt;script type='text/javascript' src='crcdsc.js'></script> os dois scripts JS estão no mesmo diretorio dos scripts PHP para testar... QUANDO O CONTEUDO DOS SCRIPTS JS é colocado direto em template.php, os scripts funcionam... quando faço o link a um arquivo .JS não funcionam... ALGUÉM TEM ALGUMA DICA? jÁ TENTEI DE TUDO, E NÃO QUERO ENGORDAR O TEMPLATE COM 5 PÁGINAS DE CODIGO JS... interessante é que quando os forms são montados, eu vejo os dois &lt;script type='text/javascript' src='mtfrm.js'></script> &lt;script type='text/javascript' src='crcdsc.js'></script> então a chamada aos scripts JS está sendo incorporada ao HTML gerado... porque não funcionam então? O firebug MOSTRA OS SCRIPTS, MAS ACUSA QUE AS FUNÇÕES NÃO FORAM DEFINIDAS... seria alguma coisa ligada ao escopo das variáveis definidas nos scripts JS? aceito sugestões...
  5. ALLAN... SEGUINTE... O innerHTML funcionou. O clearDiv não... paciência, problema resolvido e mais uma coisa que eu aprendi [não sabia deste uso para o innerHtml..] Bem, quando eu achei que tudo estava resolvido, fui testar o script no IE6... eu tinha feito tudo no FX2, e não pensei que teria grande diferença... tem! os INPUTS são gerados dentro de LABELS/FIELDSETS... normalmente eu usaria tabelas, mas estou tentando incrementar mais a usabilidade dos meus sites e resolvi experimentar os fieldsets... no FX, o resultado foi o esperado. no IE, todos os campos foram CENTRADOS... exigiu uma alteração nos estilos, incluindo um text-align:left, para alinhar tudo no lugar certo... se os clientes soubessem a quantidade de tempo que a gente gasta testando os sites em N navegadores... !!! Só te quero perguntar tua opinião sobre JAVASCRIPT... você acha que ainda andam bloqueando o uso nos navegadores? Eu poderia montar todos os formulários direto no PHP, mas exigiria recarregar toda a pagina. CLARO, PODERIA USAR JS para fazer um request e montar o form no php, respondendo com parte da página, mas ai estaria usando de novo JS [neste caso para que né?!]... talvez precisasse fazer DE DUAS FORMAS: PERGUNTAR SE O JS ESTÁ ATIVO, SE SIM, RODAR A VERSAO JS, SE NÃO, RODAR A VERSAO PHP... mas fica caro isto!...Que achas disto? :wacko:
  6. DivCat não está definido, ele é uma variável que "some" depois da função acabar. Lembre-se que toda a variável definida como var dentro de uma função tem escopo local, quando a função terminar ela some e além disso, a variável só existe para a função que a criou. O retorno de childNodes é um array. Um array de todos os elementos filhos. Você pode fazer a clearDiv de maneira facil: document.getElementById("nmcat").innerHTML="" Ou da maneira dificil: function clearDiv(){ var divCat=document.getElementById("nmcat") for (var x=0; x >divCat.childNodes.length; x++) divCat.removeChild(divCat.childNodes[x]) } Akeleabrasss obrigado... tentarei amanhã cedo! bons sonhos! Rogério
  7. COLEGA... NADA... TÁ COM SOLUÇO O DANADO DO SCRIPT... seguinte... um usuario normal vai digitar 3 e ele cria 3 inputs, PEX.... MAS TEM OS DOIDOS... que "de repente" lembram que são 5 inputs... ai digitam 5 na caixa esperando que ele apenas acrescente mais dois... mas ele CRIA MAIS 5!... oU SEJA, PRECISO DE UM clearDiv(), uma funçãozinha para antes de inserir os INPUTS, limpar os filhotes do div numcat deixando ele vazio [sem Child]... ficou assim, mas não tah funcionando... acho que tem algo a ver com tipo de variavel, de novo function clearDiv(){ var ind = DivCat.childNodes.length; for (var j = ind - 1; j >= 0; j--) { DivCat.removeChild(DivCat.childNodes[j]); } dataDiv.style.border = 'none'; botei ele no final do script principal... O FIREBUG ALEGA que eu não defini DIVCAT... eu COLOQUEI UM COMENTARIO AONDE ESTOU CHAMANDO O CLEARDIV, IMEDIATAMENTE APÓS O var DivCat = document.getElementById('nmcat'); PORTANTO, DIVCAT está definido... mas é um array? porque só sendo um array vai fazer sentido usar o var ind = DivCat.childNodes.length; tentei fazer um alert para ver o valor de ind [o numero de filhotes de divcat] mas os resultados não faziam sentido algum... tens alguma ideia? &lt;script type="text/javascript"> function ncateg(){ //RECEBO A QUANTIDADE DE INPUTS NECESSÁRIOS var ncats = document.getElementById('ncat').value; ncats=parseInt(ncats); //AVALIO SE O NÚMERO DE CATEGORIAS É MENOR QUE 9 - ISTO É CONFIGURAVEL. if (ncats > 9) { alert("NÚMERO DE CATEGORIAS EXCEDEU O LIMITE"); } else { // IDENTIFICO O ELEMENTO DE SAÍDA var DivCat = document.getElementById('nmcat'); //MINHA IDEIA ERA CHAMAR O CLEARDIV AQUI... //NOMINO CADA PARAGRAFO var pEl = document.createElement('p'); pEl.id = "parag"; var textNode = document.createTextNode('Preencha os campos abaixo com o nome de cada categoria'); pEl.appendChild(textNode); DivCat.appendChild(pEl); var lblEl = document.createElement('label'); var text2Node = document.createTextNode('Especifique: Nome da Categoria de Inscrição : Valor da Inscrição em R$'); lblEl.htmlFor = "cats"; lblEl.className = "cats"; lblEl.appendChild(text2Node); var fldEl = document.createElement('fieldset'); fldEl.className = "cats"; DivCat.appendChild(lblEl); DivCat.appendChild(fldEl); for (var i = 0; i < ncats; i++) { //var text3Node = document.createTextNode(' : R$'); var brEl = document.createElement('br'); var inputEl = document.createElement('input'); inputEl.id = "categ"; inputEl.type = "text"; inputEl.name = "categ" + i; inputEl.size = "50"; inputEl.maxLength ="50" var input2El = document.createElement('input'); input2El.id = "vcat"; input2El.type = "text"; input2El.name = "vcat" + i; input2El.size = "5"; input2El.maxLength ="5" fldEl.appendChild(inputEl); //fldEl.appendChild(text3Node); fldEl.appendChild(input2El); fldEl.appendChild(brEl); } // AGORA INSIRO O SUBMIT PARA FECHAR O FORM var fldEl2 = document.createElement('fieldset'); fldEl2.className = "cats"; var inputEl2 = document.createElement('input'); inputEl2.type = "submit"; inputEl2.name = "enviar"; inputEl2.value = "Enviar"; DivCat.appendChild(fldEl2); fldEl2.appendChild(inputEl2); } } function clearDiv(){ var ind = DivCat.childNodes.length; for (var j = ind - 1; j >= 0; j--) { DivCat.removeChild(DivCat.childNodes[j]); } dataDiv.style.border = 'none'; }
  8. ALLAN... O PRIMEIRO TINHA ME PASSADO... JS tem uns detalhes chatos, e você sabe o que acontece quando a gente mistura PHP, MYSQL, HTML e JS tudo no mesmo saco... volta e meia esqueço uma regrinha do JS na hora de escrever [==] e arranco os cabelos no debug.,.. o segundo eu consertei... foi bobagem mesmo... e realmente DEU LOOPS INFINITOS E TRAVOU O FX VARIAS VEZES e eu sem entender... ATÉ QUE o DEBUG DO APTANA avisou que tinha um loop infinito... foi ai que vi a besteira!!! tks! eu sei que AJAX envolve requisições assincronas ao servidor... JS é apenas uma parte disto, mas eu sou mais designer que webdesigner, e entendo o ajax como uma FILOSOFIA DE RELACIONAMENTO do usuário com o site... uma forma de evitar recargas totais do form [aqueles flashs de montar página] ou acessos adicionais ao servidor... o problema é que fico pensando numa coisa que um amigo meu vive dizendo... E FUNCIONA COM O JAVASCRIPT BLOQUEADO... sei que não... só espero que o número de pessoas com o JS bloqueado tenha diminuido... aliás este é meu maior receio e por isto uso estes js muito muito discretamente... eu poderia fazer isto com um request ao servidor pedindo um PHP simples que simplesmente pegaria o número digitado e montaria uma saída em texto com os INPUTS montadinhos... retornando ao DOM para inserção... mas ai eu perderia mais uma oportunidade de melhorar meus conhecimentos de JS!!! :rolleyes: Enfim, obrigado pela força... estou testando o conjunto... Rogério Leite
  9. AMIGOS.... Nada como um "debate" virtual para ajudar nos nossos desenvolvimentos... graças ao "hipotética" discussão com Allan sobre o andamento deste exercicio terminei conseguindo o que queria... deixo aqui o código para ajudar a quem tiver o mesmo probleminha... se alguém precisar do codigo todo, por favor peça... este post está ajustado para me enviar avisos caso receba algum pedido... este é apenas meu 3 script em javascript para obter um efeito ajax... ainda estou aprendendo o "idioma" js, apesar de haver usado uma coisa aqui e outra ali nos últimos 10 anos... qualquer duvida, tamos ai! // IDENTIFICO O ELEMENTO DE SAÍDA var DivCat = document.getElementById('nmcat'); clearDiv(); //NOMINO CADA PARAGRAFO var pEl = document.createElement('p'); pEl.id = "parag"; var textNode = document.createTextNode('Preencha os campos abaixo com o nome de cada categoria'); pEl.appendChild(textNode); DivCat.appendChild(pEl); var lblEl = document.createElement('label'); var text2Node = document.createTextNode('Especifique: Nome da Categoria : Valor R$'); lblEl.htmlFor = "cats"; lblEl.className = "cats"; lblEl.appendChild(text2Node); var fldEl = document.createElement('fieldset'); fldEl.className = "cats"; DivCat.appendChild(lblEl); DivCat.appendChild(fldEl); for (var i = 0; i < ncats; i++) { //var text3Node = document.createTextNode(' : R$'); var brEl = document.createElement('br'); var inputEl = document.createElement('input'); inputEl.id = "categ"; inputEl.type = "text"; inputEl.name = "categ" + i; inputEl.size = "50"; inputEl.maxLength ="50" var input2El = document.createElement('input'); input2El.id = "vcat"; input2El.type = "text"; input2El.name = "vcat" + i; input2El.size = "5"; input2El.maxLength ="5" fldEl.appendChild(inputEl); //fldEl.appendChild(text3Node); fldEl.appendChild(input2El); fldEl.appendChild(brEl); } // AGORA INSIRO O SUBMIT PARA FECHAR O FORM var fldEl2 = document.createElement('fieldset'); fldEl2.className = "cats"; var inputEl2 = document.createElement('input'); inputEl2.type = "submit"; inputEl2.name = "enviar"; inputEl2.value = "Enviar"; DivCat.appendChild(fldEl2); fldEl2.appendChild(inputEl2); } } <form name="form1" id="form1" method="post" action="proctab.php" > <P>Informe o número de categorias de inscrição.</p> <label for="numcat" class="cats">Número de Categorias [até 9]</label> <fieldset id="numcat" class="cats"> <input name="ncat" type="text" id="ncat" size="5" maxlength="1" onblur="ncateg()"/> </fieldset> <div id="nmcat"></div> </form> </body> </html>
  10. ALAN... eu já tinha escrito um enorme email depois de receber o seu e testado sem conseguir fazer funcionar... mas ai me bateu uma daquelas insPIRAÇÕES e eu fui chcar algumas coisas... PARENTESES, CHAVES, ASPAS SIMPLES E DUPLAS, ETC... ai consegui fazer funcionar... o erro estava em usar um par de CHAVES ao invés de PARENTESES, em um dos createElement... o codigo revisto ficou assim, com sua colaboração e com minha revisão... e funciona... OBRIGADO... você sabe que o que mais faz falta ao desenvolvedor independente são pessoas com quem trocar idéias... as vezes uma besteira trava um dia de trabalho!!! VALEU!!! &lt;script type="text/javascript"> function ncateg(){ var ncats = document.getElementById('ncat').value; var DivCat = document.getElementById('nmcat'); var pEl = document.createElement('p'); var textNode = document.createTextNode('Preencha o campo abaixo com o nome de cada categoria'); pEl.appendChild(textNode); DivCat.appendChild(pEl); } </script> ASSIM FUNCIONOU.... WELLLL, TENTEI ENTÃO O PASSO SEGUINTE... CRIAR N PARAGRAFOS a partir de um n inserido no input ncat... pensei em dar um nome diferente a cada parágrafo, usando a própria variável de iteração i com pEl.idName = "parag"+i NÃO FUNCIONOU... ENTENDA que eu fui bem alem, já criei os label, fieldset e input elements, mas como não funcionou pra cria-los, então retornei a soluçaõ anterior tentando simplificar e resolver um pequeno problema de cada vez... de qualquer forma boto DEPOIS do código de testes, o código todo previsto... quem sabe eu estou fazendo outra asneira simples e não estou conseguindo ver!!! CODIGO DE TESTES TENTANDO APENAS CRIAR N PARAGRAFOS... <script type="text/javascript"> function ncateg(){ var ncats = document.getElementById('ncat').value; var DivCat = document.getElementById('nmcat'); for (var i=0; i=ncats; i++) { var pEl = document.createElement('p'); pEl.idName = "parag"+i; var textNode = document.createTextNode('Preencha os campos abaixo com o nome de cada categoria'); pEl.appendChild(textNode); DivCat.appendChild(pEl); } } </script> E AQUI TUDO O QUE QUERO FAZER.... CRIAR N INPUTS... ESTE EU PRETENDO QUE SEJA MEU RESULTADO FINAL... <script type="text/javascript"> function ncateg(){ var ncats = document.getElementById('ncat').value; var DivCat = document.getElementById('nmcat'); for (var i=0; i=ncats; i++){ var lblEl = document.createElement('label'); lblEl.htmlFor = "cats"+i; var fldEl = document.createElement('fieldset'); fldEl.idName = "cats"+i; var inputEl = document.createElement('input'); inputEl.id = "categ"+i; inputEl.type = "text"; inputEl.name ="categ"+i; inputEl.size ="10"; DivCat.appendChild(lblEl); DivCat.appendChild(fldEl); DivCat.appendChild(inputEl); } } </script>
  11. AMIGOS... estou tentando algo bem besta em ajax, desde hj cedo, aqui um help caia bem! tenho um campo INPUT ncat, aonde digitarei um numero n entre 0 e 9... dinâmicamente, quero montar n inputs diferentes... servirá para alimentar um conjunto de categorias diferentes de elementos.. tipo: lápis, canetas, borrachas... o form vai enviar isto para um PHP processar... com base no numero esperava criar os elementos no div nmcat, e como sou novato em ajax, comecei tentando algo simples, CRIAR UM PARAGRAFO E INSERIR UM TEXTO... quebrei a cabeça e não consegui... não parece dificil e penso que estou escorregando em alguma besteira... abaixo o último código testado! <html> <head> &lt;script type="text/javascript"> function ncateg(){ var ncats = document.getElementById("ncat").value; var DivCat = document.divNode("nmcat"); pEl = document.createElement("p"); textNode = document.createTextNode("Preencha o campo abaixo com o nome de cada categoria"); pEl.appendChild(textNode); divNode.appendChildNode(pEl); } </script> </head> <body> <form name="form1" id="form1" method="post" action="proctab.php" > <P>Informe o número de categorias.</p> <label for="numcat">Número de Categorias [até 9]</label> <fieldset id="numcat"> <input name="ncat" type="text" class="required" id="ncat" size="5" maxlength="1" onblur="ncateg()"/> </fieldset> <div id="nmcat"></div> </form> </body> </html>
×
×
  • Criar Novo...