função mascara moeda - Bolquerar objeto readonly... Como?
Olá Pessoa,
Uso a função abaixo para formatar moeda.. Funciona legal.
Porem em inputs com atributo readonly... Ela pemite alteração.
Estou tentando bloquea-la pelo atribuito... Mais não tá rolando...
Segue função:
//===================================
//MÁSCARA DE MOEDA
//onkeypress='reais(this,event)' onkeydown="backspace(this,event)'
documentall = document.all;
function formatamoney(c) {
var t = this; if(c == undefined) c = 2;
var p, d = (t=t.split("."))[1].substr(0, c);
for(p = (t=t[0]).length; (p-=3) >= 1;) {
t = t.substr(0,p) + "." + t.substr(p);
}
return t+","+d+Array(c+1-d.length).join(0);
}
String.prototype.formatCurrency=formatamoney
function demaskvalue(valor, currency){
var val2 = '';
var strCheck = '0123456789';
var len = valor.length;
if (len== 0){
return 0.00;
}
if (currency ==true){
for(var i = 0; i < len; i++)
if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;
for(; i < len; i++){
if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
}
if(val2.length==0) return "0.00";
if (val2.length==1)return "0.0" + val2;
if (val2.length==2)return "0." + val2;
var parte1 = val2.substring(0,val2.length-2);
var parte2 = val2.substring(val2.length-2);
var returnvalue = parte1 + "." + parte2;
return returnvalue;
}
else{
val3 ="";
for(var k=0; k < len; k++){
if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
}
return val3;
}
}
function reais(obj,event){
var whichCode = (window.Event) ? event.which : event.keyCode;
if (whichCode == 8 && !documentall) {
if (event.preventDefault){ //standart browsers
event.preventDefault();
}else{ // internet explorer
event.returnValue = false;
}
var valor = obj.value;
var x = valor.substring(0,valor.length-1);
obj.value= demaskvalue(x,true).formatCurrency();
return false;
}
FormataReais(obj,'.',',',event);} // end
function backspace(obj,event){
var whichCode = (window.Event) ? event.which : event.keyCode;
if (whichCode == 8 && documentall) {
var valor = obj.value;
var x = valor.substring(0,valor.length-1);
var y = demaskvalue(x,true).formatCurrency();
obj.value ="";
obj.value += y;
if (event.preventDefault){
event.preventDefault();
}else{ // internet explorer
event.returnValue = false;
}
return false;
}// end if
}// end backspace
function FormataReais(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
/
if (whichCode == 0 ) return true;
if (whichCode == 9 ) return true; //tecla tab
if (whichCode == 13) return true; //tecla enter
if (whichCode == 16) return true; //shift internet explorer
if (whichCode == 17) return true; //control no internet explorer
if (whichCode == 27 ) return true; //tecla esc
if (whichCode == 34 ) return true; //tecla end
if (whichCode == 35 ) return true; //tecla end
if (whichCode == 36 ) return true; //tecla home
if (e.preventDefault){
e.preventDefault()
}else{ // internet explorer
e.returnValue = false
}
var key = String.fromCharCode(whichCode);
if (strCheck.indexOf(key) == -1) return false;
fld.value += key;
var len = fld.value.length;
var bodeaux = demaskvalue(fld.value,true).formatCurrency();
fld.value=bodeaux;
if (fld.createTextRange) {
var range = fld.createTextRange();
range.collapse(false);
range.select();
}
else if (fld.setSelectionRange) {
fld.focus();
var length = fld.value.length;
fld.setSelectionRange(length, length);
}
return false;
}
//==========================================
Tipo algo assim:
for(var i = 0; i < obj.attributes.length; i++){
if(obj.attributes[i].specified)
if(obj.attributes[i].readonly=="true"){ ///
obj.attributes[i].alt=="bloq"
return false;
}
}
Mas tb não bloqueia... Agradeço qualuer ajuda.
Discussão (12)
Carregando comentários...