Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ramon Melo

DIV dentro de DIV

Recommended Posts

Galera é o seguinte, to crianod um site que os links abrem em uma div.. sendo que a pagina do link que vai abrir, tem uma div dentro dela, que quando eu clico em um botao, ele vai adicionando campos de texto.. Se eu abrir a pagina teste.html, ele cria os campos normais.. mas se eu abrir o teste2.html e clicar no link (que vai abrir a pagina teste.html dentro da div), ele nao consegue criar os campos.. vou postar o codigo pra ficar melhor:

 

teste.html

<html>  
<head>
        <title>java script: Adicionar e remover campos dinamicamente!</title>  
<script language="Javascript" type="text/javascript">   
/*
Script desenvolvido por: klonder
Postagem exclusiva em: http://www.forum.imasters.com.br
Liberado para uso e modificação.
*/

//Não altere esses valores!
var iCount = 0;
var iCampos = 1;
var hidden1; 


//Definindo quantos campos poderão ser criados (máximo);
var iCamposTotal = 5; 



//Função que adiciona os campos;
function addInput() {   
if (iCampos <= iCamposTotal) {
        hidden1 = document.getElementById("hidden1");
        
        //Criando uma variável que armazenará as informações da linha que será criada.
        //Os campos estão sendo colocados no interior de uma div, pois a linha contém muitos elementos;
        //Basta excluir a div, para excluir todos os elementos da linha;
        var texto = "<div id='linha"+iCount+"'><input type='text' name='texto"+iCount+"' id='texto"+iCount+"' value='Meu texto "+iCount+"'><input type='button' value='Apagar campo' onclick='removeInput(\"linha"+iCount+"\")'></div>";          
  
        //Capturando a div principal, na qual os novos divs serão inseridos:
        var camposTexto = document.getElementById('camposTexto');   
        camposTexto.innerHTML = camposTexto.innerHTML+texto;
  
        //Escrevendo no hidden os ids que serão passados via POST;
        //No código ASP ou PHP, você poderá pegar esses valores com um split, por exemplo;
                if (hidden1.value == "") {
                        document.getElementById("hidden1").value = iCount;
                }else{
                        document.getElementById("hidden1").value += ","+iCount;
                }
iCount++;
iCampos++;
}   
}
   
//Função que remove os campos;
function removeInput(e) {
   var pai = document.getElementById('camposTexto');
   var filho = document.getElementById(e);
   hidden1 = document.getElementById("hidden1");
   var campoValor = document.getElementById("texto"+e.substring(5)).value;
   var lastNumber = hidden1.value.substring(hidden1.value.lastIndexOf(",")+1);

   if(confirm("O campo que contém o valor:\n» "+campoValor+"\nserá excluído permanentemente!\n\nDeseja prosseguir?")){
                var removido = pai.removeChild(filho);
                //Removendo o valor de hidden1:
                if (e.substring(5) == hidden1.value) {
                        hidden1.value = hidden1.value.replace(e.substring(5),"");
                }else if(e.substring(5) == lastNumber) {
                        hidden1.value = hidden1.value.replace(","+e.substring(5),"");
                }else{
                        hidden1.value = hidden1.value.replace(e.substring(5)+",","");           
                }
        iCampos--;
        }
}
</script> 
</head>  

<body>  

<form  name="my_form" id="my_form" action="" method="post">  
<input type="button" value="Criar campo texto" name="add_input" id="add_input" onclick="addInput();">  
<div id="camposTexto"></div>
<br><br>Ajuste o campo abaixo para "hidden" no código-fonte.
<br>O valor passado será utilizado na página ASP ou PHP, por exemplo, servindo de controle dos ids passados:
<br><input type="text" name="hidden1" id="hidden1" value="">
</form>  

</body>  
</html>

 

teste2.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var xmlhttp = getXmlHttpRequest();
  
function getXmlHttpRequest()
{
   if (window.XMLHttpRequest)
   {
      return new XMLHttpRequest();
   }
   else if (window.ActiveXObject)
   {
      try
      {
         return new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e)
      {
         try
         {
            return new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e){}
      }
   }
}

function requisicao(_strNomePagina)
{
      xmlhttp.open("GET", _strNomePagina, true);
      xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
      xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
      xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
      xmlhttp.setRequestHeader("Pragma", "no-cache");
      xmlhttp.onreadystatechange = function()
      {
         if (xmlhttp.readyState==4)
         {
            document.getElementById('conteudo').innerHTML = xmlhttp.responseText;
         }
      }  
      xmlhttp.send(null);
}
</script>

</head>

<body>
<a href="javascript: requisicao('teste.html');">aaaaa</a>

  <div id="conteudo">Conteudo incial da pagina..</div>
</body>
</html>
.....................

 

Se alguem puder testar para verificar pra mim esse erro.. valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece porque js que é carregado por ajax não funciona mesmo.

Existem vários tópicos aqui no fórum debatendo isso. Mas no teu caso, acho que o ideal era separar num arquivo .js, e chamar ele pela tag <script> na página que recebe tudo.

 

Acredito que funcione dessa forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.