Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

[Resolvido] parametro em php onclick para função confirm

Recommended Posts

Boa Noite

Me deem uma luz aqui.

Pode ser?

 

Tenho essa funçao javascript

function verifica(Msg)
{
return confirm(Msg);
}

Queria passar esse parametro Msg para essa função via php.

Estou fazendo assim:

<a href='cliente_alterar.php?acao=bloquear&id=$id&bloqueio=$bloquear' onclick='return verifica('$msg')'>$icone</a>

Dependendo da condição de bloqueio, ese $msn recebe um valor diferente.

Mas não ta dando a janela.

 

Onde eu estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<a id="cliente_alterar" href="#"><?php echo $icone; ?></a>


<script type="text/javascript">
document.getElementById('cliente_alterar').addEventListener('click', function() {
var msg = verifica('<?php echo $msg; ?>');
location.href = "cliente_alterar.php?acao=bloquear&id=$id&bloqueio=" + msg;
}, false);
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou não é isso que estou precisando ou não entendi direito.

 

O que eu quero é que, OBRITORIAMENTE, haja um onclik no href chamando a função verificar(). Porem, que essa função recea um parametro que muda dependendo do tipo de bloqueio que o usuario tem no monto. Ficando ASSIM:

 

function verifica(Msg){ return confirm(Msg);}

Queria passar esse parametro Msg para essa função via php.

Estou fazendo assim:

 
<a href='cliente_alterar.php?acao=bloquear&id=$id&bloqueio=$bloquear' onclick='return verifica('$msg')'>$icone</a>

Veja a idealisação:

 

<?php
while(list($id, $cnpj, $cpf, $razaosocial, $nome, $responsa, $cep, $endereco, $numero, $bairro, $estado, $cidade, $tel, $cel, $bloqueio) = mysql_fetch_row($sql)) {
if ($cpf<>"") {$cpf=formata_cpf($cpf);}

if ($cnpj<>"") {$cnpj=formata_cnpj($cnpj);}	

if ($tel<>"") {$tel=formata_tel($tel);}

if ($cel<>"") {$cel=formata_tel($cel);}	

if ($bloqueio=="s"){ 
                    $bloquear = "n"; 
				 $icone = "<img border=0 src=figuras/desbloquear.ico>";
				 $msg ="Deseja desbloquear esse cliente?";
				}
else				{ 
                    $bloquear = "s"; 
				 $icone = "<img border=0 src=figuras/bloquear.gif>";	
				 $msg ="Deseja Bloquear esse cliente?";
				}		

echo "
     <tr BGCOLOR=#FFFFCC>
     <td><font face=Arial size=-2><b>". $id ."</b></font></td>
     <td><font face=Arial size=-2><b>". $cnpj ."</b></font></td>
     <td><font face=Arial size=-2><b>". $razaosocial ."</b></font></td>
     <td><font face=Arial size=-2><b>". $cpf ."</b></font></td>
     <td><font face=Arial size=-2><b>". $nome ."</b></font></td>
     <td><font face=Arial size=-2><b>". $responsa ."</b></font></td>
     <td align='center'><a href='cliente_alterar.php?acao=alterar&id=$id'><img border=0 src=figuras/alterar.ico></a></td>
     <td align='center'><a href='cliente_alterar.php?acao=bloqueia&id=$id&bloqueio=$bloquear' onclick='return verifica('$msg')'>$icone</a></td>	  
     </tr>
";
}

 

Estou observando que quando faço:

 

     <td align='center'><a href='cliente_alterar.php?acao=bloqueia&id=$id&bloquear=$bloq' onclick='verifica('$msg');'>$icone</a></td>	  

 

Ou seja, a função verifica sendo chamada por onclick de dentro de um href do html, ela não funciona.

Mas, quando jogo a função verifica para fora do href dai funciona. Como abaixo:

<script>'verifica('$msg');<?script>
     <td align='center'><a href='cliente_alterar.php?acao=bloqueia&id=$id&bloquear=$bloq' onclick='verifica('$msg');'>$icone</a></td>	  

O que pode ser feito para dar certo?

Preciso dela funcionando no onclik do href.

 

Grato a quem puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o correto no caso é o seguinte:

 

 function verifica( Msg, redirecionamento, e ){ 
  var ev = window.event ? window.event : e; 
  ev.preventDefault(); //
  if( confirm( Msg ) ) return true;

  else { alert( 'Okay, nada feito!' ); return false; }
}

E então, você chama assim:

 

echo '<td align="center"><a href="cliente_alterar.php?acao=bloqueia&id='.$id.'&bloquear='.$bloq.'" onclick="verifica(\''.$msg.'\', this.href, event );">'.$icone.'</a></td>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irmão.

 

Funcionou não.

 

Inclusive ja arrumei os "" dentro do echo que não pode e tb acertei o \''.$msg.'\' para '\'.$msg.'\'

 

Mas nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou não.

e oque aconteceu de errado ?

Inclusive ja arrumei os "" dentro do echo que não pode e tb acertei o \''.$msg.'\' para '\'.$msg.'\'

a sintaxe que passei, está correta.

mostre como você colocou.

 

 

aperte Ctrl + Shif + J no Firefox, e corrija os erros.

referencia:

http://www.wbruno.com.br/blog/2011/03/31/como-debugar-javascript-firefox-erros-comuns/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irmão.

 

Obrigado pela força mas já consegui de uma forma mais facil.

 

Era só colocar o delimitador \ que permite " dentro do echo que deu certo.

 

Obrigado.

 

Ficou assim:

js

function verifica(Msg)
{
return confirm(Msg) ;
}

php

echo "
     <tr BGCOLOR=#FFFFCC>
     <td><font face=Arial size=-2><b>". $id ."</b></font></td>
     <td><font face=Arial size=-2><b>". $cnpj ."</b></font></td>
     <td><font face=Arial size=-2><b>". $razaosocial ."</b></font></td>
     <td><font face=Arial size=-2><b>". $cpf ."</b></font></td>
     <td><font face=Arial size=-2><b>". $nome ."</b></font></td>
     <td><font face=Arial size=-2><b>". $responsa ."</b></font></td>
     <td align='center'><a href='cliente_alterar.php?acao=alterar&id=$id'><img border=0 src=figuras/alterar.ico></a></td>
-->   <td align='center'><a href='cliente_alterar.php?acao=bloqueia&id=$id&bloquear=$bloq' onclick=\"return verifica('$msg')\"'>$icone</a></td>	  
     </tr>
";

 

Aproveitando o tópico.

 

tenho uma função Js.

	 document.form_get.cidade.options.length = 1;

Acontece que esse for_get não é o nome do form e sim um parametro que eata chegando.

 

Como adiciono esse parametro para receber o value do parametro?

Seria assim?

	 document.+form_get+.cidade.options.length = 1;

Tentei assim mas não funcionou

 

Aproveitando o tópico.

 

tenho uma função Js.

	 document.form_get.cidade.options.length = 1;

Acontece que esse for_get não é o nome do form e sim um parametro que eata chegando.

 

Como adiciono esse parametro para receber o value do parametro?

Seria assim?

	 document.+form_get+.cidade.options.length = 1;

Tentei assim mas não funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

acredito que:

document[ form_get ].cidade...

funcione. Porém:

 

prefira usar o standard

 

document.getElementById( id_input_ou_select ).options..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou uma coisa e atrapalhou outra.rsrs

 

É o seguinte:

 

Se trata daquele squema de uma combo de estados e com ajax e php se busca no mysql a cidade.

 

buscacidade.js

  function DadosCidade(valor,form_get) {
     //verifica se o browser tem suporte a ajax
  try {
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch(e) {
        try {
           ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }
     catch(ex) {
           try {
              ajax = new XMLHttpRequest();
           }
        catch(exc) {
              alert("Esse browser não tem recursos para uso do ajax");
              ajax = null;
           }
        }
     }
  //se tiver suporte ajax
  if(ajax) {
     //deixa apenas o elemento 1 no option, os outros são excluídos
	 document[form_get].cidade.options.length = 1;
	 idOpcao  = document.getElementById("opcoescidade");

     ajax.open("POST", "../global/funcoes_php/buscacidade.php", true);
	 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	 ajax.onreadystatechange = function() {
           //enquanto estiver processando...emite a msg de carregando
		if(ajax.readyState == 1) {
		   idOpcao.innerHTML = "Carregando...!";   
        }
		//após ser processado - chama função processXMLCidades que vai varrer os dados
           if(ajax.readyState == 4 ) {
		   if(ajax.responseXML) {
		      processXMLCidades(ajax.responseXML);
		   }
		   else {
		       //caso não seja um arquivo XML emite a mensagem abaixo
			   idOpcao.innerHTML = "Primeiro selecione o estado>>";
		   }
           }
        }
	 //passa o código do estado escolhido
     var params = "estado="+valor;
        ajax.send(params);
     }
  }

  function processXMLCidades(obj){
     //pega a tag cidade
     var dataArray   = obj.getElementsByTagName("cidade");

  //total de elementos contidos na tag cidade
  if(dataArray.length > 0) {
     //percorre o arquivo XML paara extrair os dados
        for(var i = 0 ; i < dataArray.length ; i++) {
           var item = dataArray[i];
		//contéudo dos campos no arquivo XML
		var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
		var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;

        idOpcao.innerHTML = "Selecione uma das opções abaixo>>";

		//cria um novo option dinamicamente  
		var novo = document.createElement("option");
		    //atribui um ID a esse elemento
		    novo.setAttribute("id", "opcoescidade");
			//atribui um valor
		    novo.value = codigo;
			//atribui um texto
		    novo.text  = descricao;
			//finalmente adiciona o novo elemento
			document[form_get].cidade.options.add(novo);
	 }
  }
  else {
    //caso o XML volte vazio, printa a mensagem abaixo
	idOpcao.innerHTML = "Primeiro selecione o estado>>";
  }	  
  }

buscacidade.php

<?php 
include("../funcoes_php/conexao.php"); 
$estado = $_POST["estado"];   

$sql = "SELECT * FROM  cidades WHERE estado = '$estado' ORDER BY nome";            
$sql = mysql_query($sql);  
$row = mysql_num_rows($sql);    

//VERIFICA SE VOLTOU ALGO 
if($row) {                
  //XML
  $xml  = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  $xml .= "<cidades>\n";               

  //PERCORRE ARRAY            
  for($i=0; $i<$row; $i++) {  
     $codigo    = mysql_result($sql, $i, "id"); 
  $descricao = mysql_result($sql, $i, "nome");
     $xml .= "<cidade>\n";     
     $xml .= "<codigo>".$codigo."</codigo>\n";                  
     $xml .= "<descricao>".$descricao."</descricao>\n";         
     $xml .= "</cidade>\n";    
  }//FECHA FOR                 

  $xml.= "</cidades>\n";

}//FECHA IF (row)                                               
  header("Content-type: application/xml; charset=utf-8");
echo $xml;            
?>

Acontece que, como uso esse script em varios formularios com nomes diferentes, estou passando o nome do form como parametro.

Nesse jeito, vai até pedir para escolher uma cidade abaixo mas a lista esta vazia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou uma coisa e atrapalhou outra.rsrs

[..]

Nesse jeito, vai até pedir para escolher uma cidade abaixo mas a lista esta vazia.

não entendi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se eu usar em vez de

 

document[form_get].

 

document.nome_form.

 

Funciona

 

Mas ai, eu terei que usar o script só para um form.

 

Dai, tive a ideia de passar o nome do form por parametro dai poderei usar o script para qualquer form.

 

O buscacidade.js esta rodando até esta linha:

 

idOpcao.innerHTML = "Selecione uma das opções abaixo>>";

 

Porem, na hora de listar o xml no select option, se mostra "Selecione uma das opções abaixo". as cidades não mostram

 

Tem como tornar uma variavel js que esta dentro de função como global?

Compartilhar este post


Link para o post
Compartilhar em outros sites

desnecessario amigo..

se você precisa de parametro, envie ele!!

 

 function processXMLCidades(obj, form_get){

e então:

 

processXMLCidades(ajax.responseXML, form_get);

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, assim que descobri como fazer, corri pra ca pra mostrar como fiz e surpreza: Voce respondeu;

 

Bom, consegui.

 

Html

 <tr>
   <td width="150">Estado:</td>
   <td            >
<select name="estado" onChange="DadosCidade(this.value,'cadastro_cliente');"  size="1" style="width:200px">
     <option value="#" selected>Selecione o Estado:</option>
     <option value="AC">AC</option>
     <option value="AL">AL</option>
     <option value="AM">AM</option>
     <option value="AP">AP</option>
     <option value="BA">BA</option>
     <option value="CE">CE</option>
     <option value="DF">DF</option>
     <option value="ES">ES</option>
     <option value="GO">GO</option>
     <option value="MA">MA</option>
     <option value="MG">MG</option>
     <option value="MS">MS</option>
     <option value="MT">MT</option>
     <option value="PA">PA</option>
     <option value="PB">PB</option>
     <option value="PE">PE</option>
     <option value="PI">PI</option>
     <option value="PR">PR</option>
     <option value="RJ">RJ</option>
     <option value="RN">RN</option>
     <option value="RO">RO</option>
     <option value="RR">RR</option>
     <option value="RS">RS</option>
     <option value="SC">SC</option>
     <option value="SE">SE</option>
     <option value="SP">SP</option>
     <option value="TO">TO</option>
   </select></td>
 </tr>
 <tr>
   <td width="150">Cidade:</td>
   <td            >
<select name="cidade"  id="cidade" size="1" style="width:200px">
       <option id="opcoescidade" value="#">Primeiro selecione o estado!</option>
   </select>
</td>
 </tr>

busca_cidade.js

  function DadosCidade(valor,form_get) {
     //verifica se o browser tem suporte a ajax
  try {
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch(e) {
        try {
           ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }
     catch(ex) {
           try {
              ajax = new XMLHttpRequest();
           }
        catch(exc) {
              alert("Esse browser não tem recursos para uso do ajax");
              ajax = null;
           }
        }
     }
  //se tiver suporte ajax
  if(ajax) {
     //deixa apenas o elemento 1 no option, os outros são excluídos
	 document[form_get].cidade.options.length = 1;
	 idOpcao  = document.getElementById("opcoescidade");

     ajax.open("POST", "../global/funcoes_php/buscacidade.php", true);
	 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	 ajax.onreadystatechange = function() {
           //enquanto estiver processando...emite a msg de carregando
		if(ajax.readyState == 1) {
		   idOpcao.innerHTML = "Carregando...!";   
        }
		//após ser processado - chama função processXMLCidades que vai varrer os dados
           if(ajax.readyState == 4 ) {
		   if(ajax.responseXML) {
		      processXMLCidades(ajax.responseXML,form_get);
		   }
		   else {
		       //caso não seja um arquivo XML emite a mensagem abaixo
			   idOpcao.innerHTML = "Primeiro selecione o estado>>";
		   }
           }
        }
	 //passa o código do estado escolhido
     var params = "estado="+valor;
        ajax.send(params);
     }
  }

  function processXMLCidades(obj,form_get){
     //pega a tag cidade
     var dataArray   = obj.getElementsByTagName("cidade");

  //total de elementos contidos na tag cidade
  if(dataArray.length > 0) {
     //percorre o arquivo XML paara extrair os dados
        for(var i = 0 ; i < dataArray.length ; i++) {
           var item = dataArray[i];
		//contéudo dos campos no arquivo XML
		var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
		var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;

        idOpcao.innerHTML = "Selecione uma das opções abaixo>>";

		//cria um novo option dinamicamente  
		var novo = document.createElement("option");
		    //atribui um ID a esse elemento
		    novo.setAttribute("id", "opcoescidade");
			//atribui um valor
		    novo.value = codigo;
			//atribui um texto
		    novo.text  = descricao;
			//finalmente adiciona o novo elemento
			document[form_get].cidade.options.add(novo);
	 }
  }
  else {
    //caso o XML volte vazio, printa a mensagem abaixo
	idOpcao.innerHTML = "Primeiro selecione o estado>>";
  }	  
  }

busca_cidade.php

<?php 
include("../funcoes_php/conexao.php"); 
$estado = $_POST["estado"];   
$sql = "SELECT * FROM  cidades WHERE estado = '$estado' ORDER BY nome";            
$sql = mysql_query($sql);  
$row = mysql_num_rows($sql);    

//VERIFICA SE VOLTOU ALGO 
if($row) {                
  //XML
  $xml  = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  $xml .= "<cidades>\n";               

  //PERCORRE ARRAY            
  for($i=0; $i<$row; $i++) {  
     $codigo    = mysql_result($sql, $i, "id"); 
  $descricao = mysql_result($sql, $i, "nome");
     $xml .= "<cidade>\n";     
     $xml .= "<codigo>".$codigo."</codigo>\n";                  
     $xml .= "<descricao>".$descricao."</descricao>\n";         
     $xml .= "</cidade>\n";    
  }//FECHA FOR                 

  $xml.= "</cidades>\n";

}//FECHA IF (row)                                               
  header("Content-type: application/xml; charset=utf-8");
echo $xml;            
?>

Espero que possa ajudar alguem

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.