Ir para conteúdo

POWERED BY:

Arquivado

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

KidFil

Distiguir textbox, clicar e limpar

Recommended Posts

fala galeraseguinte: tenho um form q vai servir como catalogo. ou seja, terah varias caixa de texto onde, inicialmente, terah o valor zero. ao clicar (ou quando receber foco), limpa a caixa de texto (value == ""). porem se a caixa de texto perder o foco e tiver value=="" , retorna ao valor inicial (value=="0").eu uso um codigo q funciona quando tenho apenas uma textbox, mas naum estou sabendo como adapta-lo para funcionar em N caixas de texto. alguem pode me ajudar?segue o js:

function cleanbx() {   quant = document.getElementById('qtd').value;   if (quant == "0")   {        	    document.getElementById('qtd').value = "";    }else{            document.getElementById('qtd').value = quant;  }}function fillbx(){ quant = document.getElementById('qtd').value; if(quant == "") {    document.getElementById('qtd').value = "0"; }else    if ((quant != "0") && (quant != ""))  {       document.getElementById('qtd').value = quant;  }	}

e o html:

<input name="qtd" id="qtd" type="text" value="0" size="7" maxlength="5" align="right" style="text-align:right" onfocus="cleanbx();" onblur="fillbx();" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, deixa eu ver se entendi, você quer que, quando você clique nesta caixa de texto, se o valor dela for "0", ela fica vazia, e quando você sair desta caixa de texto, caso o valor seja vaziu, ela fique com o valor 0, correto?

 

Bom, deste modo creio que deve resolver:

 

<script type="text/javascript">function cleanbx(id) {   var quant = document.getElementById(id);   if (quant.value == "0")   {				quant.value = "";    }}function fillbx(id){ var quant = document.getElementById(id); if(quant.value == "") {	quant.value = "0"; }}</script>

O Código da caixa de texto ficaria assim:

<input name="qtd" id="qtd" type="text" value="0" size="7" maxlength="5" align="right" style="text-align:right" onfocus="cleanbx('qtd');" onblur="fillbx('qtd');" />

Repare que no onFocus, e no onBlur, ao chamar a função, eu enviei como parametro, o id da caixa de texto, que é utilizado na função getElementById() no javascript, caso você tenha mais de uma, faça a mesma coisa que nesta primeira, só mudando o parametro que você envia para a função, para o id dos seus outros textbox.

Ex:

<input name="valid" id="valid" type="text" value="0" size="7" maxlength="5" align="right" style="text-align:right" onfocus="cleanbx('valid');" onblur="fillbx('valid');" /><input name="local" id="local" type="text" value="0" size="7" maxlength="5" align="right" style="text-align:right" onfocus="cleanbx('local');" onblur="fillbx('local');" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza rapaz... adoro esses esquemas de implementar a mesma função em vários componentes, sempre da pra otimizar mais o código e seguindo as recomendações do W3C para evitar código híbrido, vai aí uma dica.... usa esse código aqui:

 

--------------------------------------------------------------------------------------

 

function setTextEvent(obj, ev, fn){

if (obj.addEventListener) obj.addEventListener(ev, fn, false);

if (obj.attachEvent) obj.attachEvent("on"+ev, fn);

}

 

function focus(e){

try{var element = e.target }catch(er){};

try{var element = event.srcElement }catch(er){};

 

if(element.value == 0) element.value = '';

}

 

function blur(e){

try{var element = e.target }catch(er){};

try{var element = event.srcElement }catch(er){};

 

if(element.value.length == 0) element.value = 0;

}

 

function setTextAll(){

var formText = document.getElementsByTagName('input');

 

for (var i=0; i<formText.length; i++){

formText.value = 0;

 

if (formText.type=='text') setTextEvent(formText, 'focus', focus);

if (formText.type=='text') setTextEvent(formText, 'blur', blur);

}

}

 

window.onload = function(){ setTextAll(); }

 

--------------------------------------------------------------------------------------

 

Esse código vai atribuir as duas funções a TODOS os text do seu formulário sem que você precise fazer referência no próprio input, e o melhor é Web Standard e Crossbrowser!!!

 

Se você só quer atribuir as funções em alguns text do seu formulário é só adaptar ela pra pegar pelo nome, aí você define todos os text que você quer com o mesmo nome, ou então chama pelo ID e faz uma chamada de função para cada text no WINDOW.ONLOAD, as possibilidades de programação na web só são limitadas pela criatividade de cada desenvolvedor...

 

Eu testei com esse HTML super basicão:

--------------------------------------------------------------------------------------

 

<html>

<head>

<title>Fórum</title>

</head>

<body>

<input type=text />

<input type=text />

<input type=text />

<input type=text />

<input type=text />

</body>

</html>

--------------------------------------------------------------------------------------

 

Ve aí, qq coisa manda um post que eu dou uma olhada!!!! T+...

Compartilhar este post


Link para o post
Compartilhar em outros sites

com jQuery fica assim$("input").focus(function(){ $(this).val("") }).blur(function() { $(this).val($("#qtd").val()) });creio eu =p

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não utilizo jQuery, mas só pra deixar claro... dessa forma como foi colocado ele considera todos os INPUT's.OK... T+...

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.