Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Depieri Barduchi

Formatação de hora

Recommended Posts

Caros:

 

Bom dia:

 

Seguinte, tenho um script de formatação de campos, funciona bem para datas, cpf, etc, porém quando utilizo para hora o ":" substitui o item que digito, gostaria de corrigir isso, alguém pode ajudar?

segue fonte:

 

//--- mascaras gerais ---//
function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

if(document.all) { // Internet Explorer
nTecla = evtKeyPress.keyCode;
} else if(document.layers) { // Nestcape
nTecla = evtKeyPress.which;
} else {
nTecla = evtKeyPress.which;
if (nTecla == 8) {
	return true;
}
}

sValue = objForm[strField].value;
// Limpa todos os caracteres de formatação que
// já estiverem no campo.
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( " ", "" );
sValue = sValue.toString().replace( " ", "" );
fldLen = sValue.length;
mskLen = sMask.length;

i = 0;
nCount = 0;
sCod = "";
mskLen = fldLen;

while (i <= mskLen) {
bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

if (bolMask) {
sCod += sMask.charAt(i);
mskLen++;
} else {
sCod += sValue.charAt(nCount);
nCount++;
}
i++;
}

objForm[strField].value = sCod;
if (nTecla != 8) { // backspace
if (sMask.charAt(i-1) == "9") { // apenas números...
return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
else { // qualquer caracter...
return true;
}
} else {
return true;
}
}
//--- fecha mascaras gerais ---//

 

<input name="hora" type="text" id="hora" title="hora" onKeyPress="return txtBoxFormat(this.form, this.name, '99:99:99', event);" onKeyUp="return autoTab(this, 8, event);" maxlength="8"  />

 

 

Att: Bruno Coió

Compartilhar este post


Link para o post
Compartilhar em outros sites

i aew cara, bom olhando a mascara achei que ela tem muitos parâmetros e que é muito grande pra fazer o pouco que faz, dei uma mexida no código e ficou assim:

function txtBoxFormat(e, sMask) {
		
		var keyPressed = ('which' in e) ? e.which : e.keyCode;
		
		if (keyPressed == 8) return;
		else if (!(keyPressed > 47 && keyPressed < 58))	return e.preventDefault();
		
		var listValues = (e.target.value + String.fromCharCode(keyPressed)).split('');
		var listMask = sMask.split('');
		var newValue = '';

		if (listValues.length <= listMask.length){
			for (i in listValues){
				if (isNaN(listMask[i]) && !isNaN(listValues[i])){
					newValue += listMask[i];
				}
				newValue += listValues[i];
			}
			e.target.value = newValue;
		}
		e.preventDefault();		
	}

 

e no html chama passando só o evento e a mascara:

<input name="hora" type="text" id="hora" title="hora" onKeyPress="txtBoxFormat(event, '55:22:99');" maxlength="8"  />

 

espero que ajude, abraço!

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.