Ir para conteúdo

POWERED BY:

Arquivado

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

Jefrey

[Resolvido] Como preencher campos vazios em inputs texts

Recommended Posts

Olá!

Estou desenvolvendo um projeto que inclui 610 páginas. Mas, como não sou nenhum otário, aproveitei que o conteúdo que teria em cada página (numerada, em TXT e MID) e apenas transferi a variável para a página seguinte, que as detecta e abre diretamente (ótimo para se fazer SQLInjection, mas é pra rodar off-line mesmo, e é em IFRAME) pelo JavaScript.

A página que recebe as variáveis e trabalha com elas é essa:

<html>
<head>
<script>
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
  alert('Defina um hino a ser tocado!');
}
function confirma() {
var confirmacao = confirm("Abrir " + getQueryVariable('hino') + "?")
if (confirmacao) {
void(0)
} else {
location.href = "nulo.htm"
}
}
</script>
<body onLoad="javascript:confirma()">
<script>
document.write("<bgsound src='audio/hasd" + getQueryVariable('hino') + ".mid' hidden='true' volume='100'>");
document.write("<iframe src='letra/HA" + getQueryVariable('hino') + ".TXT' frameborder=0 width=100% height=480>");
</script>
</body>
</html>
É um hinário digital. A página principal tem um FORM GET, com ACTION na página acima, e TARGET em um IFRAME.

Funciona perfeitamente.

Mas aí é que está: São arquivos numerados assim:

Som:

- hasd001.mid

- hasd002.mid e por aí vai.

Texto:

- HA001.TXT

- HA002.TXT e por aí vai.

Então, se a pessoa digita um valor de três dígitos, toca perfeitamente. Porém, se a pessoa digitar um valor de dois ou um dígito ele dá 404. A pessoa deveria digitar quantos zeros forem necessários para que fiquem três dígitos.

Há alguma maneira, em JS, de se pegar a quantidade de dígitos da caixa e preencher com zeros à esquerda até se formarem 3 dígitos?

Outra dúvida:

Há alguma maneira, em JS, de validar esse INPUT TEXT para que o usuário digite apenas números?

Compartilhar este post


Link para o post
Compartilhar em outros sites

para validar apenas numeros, você pode usar a mascara com er mnum(), proposta aqui:

http://code.imasters.com.br/index.php?/topic/109-mascaras-enquanto-digita-er/

 

acessando o atributo .length, você descobre qntos digitos tem a string, e depois com um loop simples, você consegue concatenar, qntos 0 forem necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela máscara mnum(), não conhecia esse script. Adaptei ao meu site e funcionou perfeitamente.

Mas (desculpe pela ignorância), não entendi bem o atributo .lenght. Onde eu colocaria: na página que recebe os dados recuperados do form ou na página que tem o form?

Na hora de recuperar o que foi escrito no input text de name "hino" do form, eu uso:

getQueryVariable('hino')
Partindo desse, como eu colocaria o atributo .lenght?

 

Se isso for ajudar, eu estou precisando dessas informações para incorporar neste site.

 

Se isto não for possível, eu já vi que alguns sites mostram, em inputs texts, uma máscara de entrada.

Por exemplo, se o cliente for digitar um telefone, a caixa já está com o texto:

(__)____-____
Ou, se for digitar um CEP, a caixa já está assim:

__.___-___
À medida que a pessoa vai digitando, os "_'s" são substituídos pelo caractere digitado.

No meu caso, ficaria assim:

---
Já está com a máscara mnum() que o Bruno disse acima. Podem verificar clicando aqui. Também está com o maxlenght="3".

Mas é sempre o mesmo erro: se a pessoa quiser que toque o número 1 ela terá que digitar 001, senão dá 404.

Se alguém tiver o script da função que eu disse aqui, e tiver tempo para enviar... Ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz uma rotina para acrescentar os 0..

<html>
<head>
<script type="text/javascript">
/* Máscaras ER */
function mascara(o,f){
	v_obj=o;
	v_fun=f;
	setTimeout("execmascara()",1);
}
function execmascara(){
	v_obj.value=v_fun(v_obj.value);
}
function id( el ){
	return document.getElementById( el );
}
function mnum(v){
    v=v.replace(/\D/g,"");//Remove tudo o que não é dígito
    return v;
}
window.onload = function()
{
	id('hash').onkeypress = function(){
		mascara( this, mnum );
	}
	id('hash').onblur = function(){
		var dig = this.value.length;

		while( dig<3 ){
			this.value = '0'+this.value;
			dig++;
		}
	}
}
</script>
</head>
<body>
	<form action="" method="post">
		<input type="text" name="hash" id="hash" maxlength="3" />
	</form>
</body>
</html>
para essa máscara de digitação, a única coisa que ela vai fazer, é substituir a mnum, você vai continuar precisando da rotina dos zeros..

 

tem um plugin jQuery dela:

http://plugins.jquery.com/project/maskedinput

 

porém acredito que com oque postei acima, já resolva pra ti.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, William. Ajudou bastante.

Realmente o que voce tinha postado anteriormente ja resolvia meio problema. Mas o outro meio (o de acrescentar os zeros) eu tava precisando de um refresh na memoria.

Isso ai, cara! Resolvido http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

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.