We have recently updated all of our poups to RadWindows. We have a JavaScript file that parses phone number as they are entered and adds the dashes, etc. This worked fine in the ModalPopupExtender we were using and it still works fine on the pages that are not RadWindows. It also works fine on the RadWindow in IE and Chrome, but not in FireFox. I cannot for the life of me figure out why it does not work on the RadWindows only in FireFox. Any Ideas?
Here is the JS code:
Here is the JS code:
var
zChar =
new
Array(
' '
,
'('
,
')'
,
'-'
,
'.'
);
var
maxphonelength = 12;
var
phonevalue1;
var
phonevalue2;
var
cursorposition;
function
ParseForNumber1(object) {
phonevalue1 = ParseChar(object.value, zChar);
}
function
ParseForNumber2(object) {
phonevalue2 = ParseChar(object.value, zChar);
}
function
backspacerUP(object, e) {
if
(e) {
e = e
}
else
{
e = window.event
}
if
(e.which) {
var
keycode = e.which
}
else
{
var
keycode = e.keyCode
}
ParseForNumber1(object)
if
(keycode >= 48) {
ValidatePhone(object)
}
}
function
backspacerDOWN(object, e) {
if
(e) {
e = e
}
else
{
e = window.event
}
if
(e.which) {
var
keycode = e.which
}
else
{
var
keycode = e.keyCode
}
ParseForNumber2(object)
}
function
GetCursorPosition() {
var
t1 = phonevalue1;
var
t2 = phonevalue2;
var
bool =
false
for
(i = 0; i < t1.length; i++) {
if
(t1.substring(i, 1) != t2.substring(i, 1)) {
if
(!bool) {
cursorposition = i
bool =
true
}
}
}
}
function
ValidatePhone(object) {
var
p = phonevalue1
p = p.replace(/[^\d]*/gi,
""
)
if
(p.length < 3) {
object.value = p
}
else
if
(p.length == 3) {
pp = p;
d5 = p.indexOf(
'-'
)
if
(d5 == -1) {
pp = pp +
"-"
;
}
object.value = pp;
}
else
if
(p.length > 3 && p.length < 6) {
l30 = p.length;
p30 = p.substring(0, 3);
p30 = p30 +
"-"
p31 = p.substring(3, l30);
pp = p30 + p31;
object.value = pp;
}
else
if
(p.length >= 6) {
l30 = p.length;
p30 = p.substring(0, 3);
p30 = p30 +
"-"
p31 = p.substring(3, l30);
pp = p30 + p31;
l40 = pp.length;
p40 = pp.substring(0, 7);
p40 = p40 +
"-"
p41 = pp.substring(7, l40);
ppp = p40 + p41;
object.value = ppp.substring(0, maxphonelength);
}
GetCursorPosition()
if
(cursorposition >= 0) {
if
(cursorposition == 0) {
cursorposition = 2
}
else
if
(cursorposition <= 2) {
cursorposition = cursorposition + 1
}
else
if
(cursorposition <= 5) {
cursorposition = cursorposition + 2
}
else
if
(cursorposition == 6) {
cursorposition = cursorposition + 2
}
else
if
(cursorposition == 7) {
cursorposition = cursorposition + 4
e1 = object.value.indexOf(
')'
)
e2 = object.value.indexOf(
'-'
)
if
(e1 > -1 && e2 > -1) {
if
(e2 - e1 == 4) {
cursorposition = cursorposition - 1
}
}
}
else
if
(cursorposition < 11) {
cursorposition = cursorposition + 3
}
else
if
(cursorposition == 11) {
cursorposition = cursorposition + 1
}
else
if
(cursorposition >= 12) {
cursorposition = cursorposition
}
var
txtRange = object.createTextRange();
txtRange.moveStart(
"character"
, cursorposition);
txtRange.moveEnd(
"character"
, cursorposition - object.value.length);
txtRange.select();
}
}
function
ParseChar(sStr, sChar) {
if
(sChar.length ==
null
) {
zChar =
new
Array(sChar);
}
else
zChar = sChar;
for
(i = 0; i < zChar.length; i++) {
sNewStr =
""
;
var
iStart = 0;
var
iEnd = sStr.indexOf(sChar[i]);
while
(iEnd != -1) {
sNewStr += sStr.substring(iStart, iEnd);
iStart = iEnd + 1;
iEnd = sStr.indexOf(sChar[i], iStart);
}
sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);
sStr = sNewStr;
}
return
sNewStr;
}