Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
oi beleza?eu estou trabalhando com um script de mascara, porem ele so funciona em ie, estou tentando transforma-lo no maximo crossbrowser possivel, para isso preciso arrumar o keycode (so funfa em ie)...olhe como estou fazendo:
> var Key = (teclapres.which)? teclapres.which: (teclapres.keyCode)? teclapres.keyCode: teclapres.charCode. o teclapres é um parametro da funcao, function mascara(campo,teclapres,mascara){vem da mascara, mascara(this,event,'mascara'). em ie funfa normal, mais em mozilla da esse erro: Erro: event is not defined Arquivo-fonte: [http://localhost:99/vera/admin/html/mascara.js](http://localhost:99/vera/admin/html/mascara.js)alguem sabe como arrumar?desde já agradecoabracos@AAlves, seu exemplo é praticamente igual a como estava fazendo, so que ele so funfa em firefox, da aquele erro:
Erro: event is not definedArquivo-fonte: http://localhost:99/vera/admin/html/mascara.jsLinha: 141
@Crystian, vixi nao manjo nada de ingles, tentei achar, mais nao achei nada =/.. mesmo assim valeu ai aos doisalguem sabe como me ajudar?abracos
ainda nao consegui =/....eu descobri que o que esta errado nao é isso... isso ja estava certo.. ta dando erro nessa funcao da mascara:
function Detona_Event(Campo,strtext){ event.returnValue = false if (strtext != "") { Campo.value = strtext }}
diz que event nao foi definido, acho que isso so funfa em IE, mais eu nao sei nem para que serve esse returnValue = false, como posso deixar crossbrowser, alguem ajuda?desculpa postar de novo, mais é trampo, responsabilidade, ae ja viu ne =/desde ja agradecoabracos
tenta trocar o event.returnValue = false por somente return false mas depois da atribuição do valor.
Abraço
é Crystian, minha praia nao é js mesmo...
to comecando a desistir, isso nao ta indo de jeito nenhum, porque todos os browsers nao tem essas funcoes do ie que sao boas? =/
eu ja tentei fazer de tudo, e nada funciona... nao da erro, mais simplismente adiciona letras no campo de telefone no firefox...
olha a fonte:
>
function FormataCampo(Campo,teclapres,mascara){
//pegando o tamanho do texto da caixa de texto com delay de -1 no event
//ou seja o caractere que foi digitado não será contado.
strtext = Campo.value
tamtext = strtext.length
//pegando o tamanho da mascara
tammask = mascara.length
//criando um array para guardar cada caractere da máscara
arrmask = new Array(tammask)
//jogando os caracteres para o vetor
for (var i = 0 ; i < tammask; i++){
arrmask* = mascara.slice(i,i+1)*
}
var Key = teclapres.keyCode ? teclapres.keyCode : teclapres.which ? teclapres.which : evtKeyPress.charCode;
//alert (teclapres.keyCode)
//começando o trabalho sujo
if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){
if ((Key >= 37 && Key <= 40)||(Key >= 48 && Key <= 57)||(Key >= 96 && Key <= 105)||(Key == 8)||(Key == 9) ||(Key == 46) ||(Key == 13)){
Organiza_Casa(Campo,arrmask[tamtext],Key,strtext)
}
else{
Detona_Event(Campo,strtext)
}
}
else{//Aqui funcionaria a mascara para números mas eu ainda não implementei
if ((arrmask[tamtext] == "A")) {
charupper = event.valueOf()
//charupper = charupper.toUpperCase()
Detona_Event(Campo,strtext)
masktext = strtext + charupper
Campo.value = masktext
}
}
}
function Organiza_Casa(Campo,arrpos,teclapres_key,strtext){
if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){
separador = arrpos
masktext = strtext + separador
Campo.value = masktext
}
}
*function Detona_Event(Campo,strtext){*
* return false;*
if (strtext != "") {
Campo.value = strtext
}
}
*bom, se nao tiver como resolver mesmo, muito obrigado a todos e desculpa ai o incomodo** *
abracos
Calma Red, vamos dar um jeito nisso, não te preocupa q em últimos casos eu te dou um outro código pronto e agente trabalha em cima dele par te explicar. Primeiramente me diz como você está chamando essa function...Abraço
então Crystian, eu chamo a funcao assim: onkeydown="FormataCampo(this,event,'## ####-####')", ele mascara certinho, funciona certinho, so que no firefox adiciona letras , quando so era para adicionar numeros, eu já tentei de tudo, primeiro erro arrumei aquele do keycode não funcionar em firefox, agora arrumei o do event.returnValue, agora nao da mais erro... mais continua sem funcionar...valeu a ajuda mesmo, mais se nao tiver como resolver/for muito complicado, desencana =/abracos
faz um teste pra mim...
coloca onkeypress=" return FormataCampo(this,event,'## ####-####')"
deu no mesmo, ele funciona a mascara, mais continua permitindo letras no firefox, so que agora mascara as letras, ex : dw dwad-dawd :S, a outra coisa quando eu mudei o event.returnValue = false para return false parou de funcionar no ie, o problema esta exatamente ai , no event.returnvalue, nao existe um desse para ff ?abracos
Infelismente não... Trabalhar com eventos não é uma tarefa fácil, cada navegador tem sua peculiaridade e conforme algum método q você usa ele funciona ou não...Vou ver se consigo algum material pra te passar...Abraço
Seguinte red neck* o keyCode tb funciona no mozilla, dependendo em qual evento você está chamando ele. O interessante seria você dar uma lida em algum material sobre eventos de teclado e o melhor lugar é na w3c...
dá uma olhada no level 3
http://www.w3.org/DOM/DOMTR
Abraço...