Search Support

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

Learn More

Wannan tattunawa ta zama daɗaɗɗiya. Yi sabuwar tambaya idan ka na bukatar taimako.

Firefox 23 - Key Event dosen't work

  • 4 amsoshi
  • 4 sa na da wannan matsala
  • 2 views
  • Amsa ta ƙarshe daga Marcio Cardozo

more options

After I installed firefox 23 javascript function used to make a mask entry fields stopped working. Until version 22 function worked.

MaskInput = function(f, m){
 function mask(e){
  var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[À-ÿ]/i, "8": /./, "16": /^[-]?(\d{0,99})?$/ },
   rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8, "0": 16};
  function accept(c, rule){
   for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1)
    if(r & i && patterns[i].test(c))
     break;
    return i <= r || c == rule;
  }
  var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length;
  (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ?
   r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0]
   : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ?
   r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault();
 }
 for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1})
  addEventMask(f, i, mask);
};

addEventMask = function(o, e, f, s){
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e){
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEventMask = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
        if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
            return delete e[i];
    return false;
};
After I installed firefox 23 javascript function used to make a mask entry fields stopped working. Until version 22 function worked. <pre><nowiki>MaskInput = function(f, m){ function mask(e){ var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[À-ÿ]/i, "8": /./, "16": /^[-]?(\d{0,99})?$/ }, rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8, "0": 16}; function accept(c, rule){ for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1) if(r & i && patterns[i].test(c)) break; return i <= r || c == rule; } var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length; (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ? r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0] : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ? r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault(); } for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1}) addEventMask(f, i, mask); }; addEventMask = function(o, e, f, s){ var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d; r[r.length] = [f, s || o], o[e] = function(e){ try{ (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;}); e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;}); e.target || (e.target = e.srcElement || null); e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0; }catch(f){} for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false)); return e = null, !!d; } }; removeEventMask = function(o, e, f, s){ for(var i = (e = o["_on" + e] || []).length; i;) if(e[--i] && e[i][0] == f && (s || o) == e[i][1]) return delete e[i]; return false; };</nowiki></pre>

An gyara daga cor-el

Mafitar da aka zaɓa

After I debug the code I found the solution, in Firefox 22 e.key works but in Firefox 23 this attribute does not work, then switched e.key by e.charCode

Karanta wannan amsa a matsayinta 👍 0

All Replies (4)

more options

Try posting at the Web Development / Standards Evangelism forum at MozillaZine. The helpers over there are more knowledgeable about web page development issues with Firefox.
http://forums.mozillazine.org/viewforum.php?f=25
You'll need to register and login to be able to post in that forum.

more options

Thanks for the reply, but I would like to know if there are any bug in the FF23 Key Event, because the behavior change in the last version ?

The same javascript is used since Firefox 3, only now started to not work.

more options

I might be necessary to define functions before referencing to them, so you can try to define addEventMask() before function mask(e) which calls this function.

You can check the Browser/Error Console (Firefox/Tools > Web Developer;Ctrl+Shift+J) for errors.

more options

Zaɓi Mafita

After I debug the code I found the solution, in Firefox 22 e.key works but in Firefox 23 this attribute does not work, then switched e.key by e.charCode