我的 ASP 应用程序在 Windows IE 中运行完美,但当我在 ubuntu Firefox 上运行时,Javascript 无法正常工作。
下面是我的 java 脚本代码.....
我正在调用这个 java 脚本onFocus
并onBlur
触发事件。当onBlur
从日期格式触发时,会在 ubuntu firefox 中删除 1 位数字。
请有人帮忙。
函数 DateFormat(vDateName, vDateValue, e, dateCheck, dateType) { vDateType = 日期类型; // vDateName = 对象名称 // vDateValue = 被检查字段的值 // e = 事件 // 日期检查 // True = 验证 vDateValue 是否为有效日期 // False = 仅格式化输入到 vDateValue 中的值 // 日期类型 // 1 = 月/日/年 // 2 = 年/月/日 // 3 = 日/月/年 //输入第一个数字的波浪符号,然后您就可以检查变量信息。 如果 (vDateValue == “~”) { alert("AppVersion = "+navigator.appVersion+" \nNav. 4 版本 = "+isNav4+" \nNav. 5 版本 = "+isNav5+" \nIE 版本 = "+isIE4+" \n年份类型 = "+vYearType+" \n日期类型 = "+vDateType+" \n分隔符 = "+strSeperator); vDateName.值 = “”; vDateName.focus(); 返回 true; } var whichCode = (window.Event) ?e.which : e.keyCode; // 检查分隔符是否已存在。 // 如果存在分隔符并且长度大于 8,则忽略日期 如果(vDateValue.length>8&&isNav4) { 如果 ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1)) 返回 true; } //消除所有无效的 ASCII 代码 var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-"; 如果 (alphaCheck.indexOf(vDateValue) >= 1) { 如果(isNav4) { vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } 别的 { vDateName.值 = vDateName.值.substr(0,(vDateValue.length-1)); 返回 false; } } if (whichCode == 8) //忽略 Netscape 的退格键值。IE 没有值 返回 false; 别的 { //为 0123456789 创建数字字符串值/ //提供的代码包括键盘和小键盘的值 var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105'; 如果 (strCheck.indexOf(whichCode) != -1) { 如果(isNav4) { 如果(((vDateValue.length =1)) { alert("日期无效\n请重新输入"); vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } 如果 (vDateValue.length == 6 && dateCheck) { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) //将两位数的年份变成四位数的年份 如果 (mYear.length == 2 && vYearType == 4) { var mToday = new Date(); //如果年份距今超过 30 年,则使用 19,否则使用 20 var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear; 如果 (mCheckYear >= checkYear) myYear = '19' + myYear; 别的 myYear = ‘20’ + myYear; } var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 如果 (!dateValid(vDateValueCheck)) { alert("日期无效\n请重新输入"); vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } 返回 true; } 别的 { // 重新格式化日期以进行验证,并将日期类型设置为 1 如果(vDateValue.length> = 8 && dateCheck) { 如果 (vDateType == 1) // mmddyyyy { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.值 = mMonth+strSeperator+mDay+strSeperator+mYear; } 如果 (vDateType == 2) // yyyymmdd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(4,2); var mDay = vDateName.value.substr(6,2); vDateName.值 = mYear+strSeperator+mMonth+strSeperator+mDay; } 如果 (vDateType == 3) // ddmmyyyy { var mMonth = vDateName.value.substr(2,2); var mDay = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.值 = mDay+strSeperator+mMonth+strSeperator+mYear; } //创建一个临时变量用于存储DateType并更改 //将 DateType 设置为 1 以进行验证。 var vDateTypeTemp = vDateType; v日期类型 = 1; var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; 如果 (!dateValid(vDateValueCheck)) { alert("日期无效\n请重新输入"); vDateType = vDateTypeTemp; vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } vDateType = vDateTypeTemp; 返回 true; } 别的 { 如果(((vDateValue.length =1)) { alert("日期无效\n请重新输入"); vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } } } } 别的 { // 非 isNav 检查 如果(((vDateValue.length =1)) { alert("日期无效\n请重新输入"); vDateName.值 = “”; vDateName.focus(); 返回 true; } // 将日期重新格式化为可以验证的格式。mm/dd/yyyy 如果(vDateValue.length> = 8 && dateCheck) { // 可以在此处输入其他日期格式并将其解析为 // 验证程序将识别的有效日期格式。 如果 (vDateType == 1) // mm/dd/yyyy { var mMonth = vDateName.value.substr(0,2); var mDay = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } 如果 (vDateType == 2) // yyyy/mm/dd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(5,2); var mDay = vDateName.value.substr(8,2); } 如果 (vDateType == 3) // 日/月/年 { var mDay = vDateName.value.substr(0,2); var mMonth = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } 如果 (vYearLength == 4) { 如果(mYear.length = checkYear) myYear = '19' + myYear; 别的 myYear = ‘20’ + myYear; vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; // 将新值存储回字段。此函数将 // 由于首先输入的是年份,因此不适用于日期类型 2。 如果 (vDateTypeTemp == 1) // mm/dd/yyyy vDateName.值 = mMonth+strSeperator+mDay+strSeperator+mYear; 如果 (vDateTypeTemp == 3) // dd/mm/yyyy vDateName.值 = mDay+strSeperator+mMonth+strSeperator+mYear; } 如果 (!dateValid(vDateValueCheck)) { alert("日期无效\n请重新输入"); vDateType = vDateTypeTemp; vDateName.值 = “”; vDateName.focus(); 返回 true; } vDateType = vDateTypeTemp; 返回 true; } 别的 { 如果 (vDateType == 1) { 如果 (vDateValue.length == 2) { vDateName.值 = vDateValue+strSeperator; } 如果 (vDateValue.length == 5) { vDateName.值 = vDateValue+strSeperator; } } 如果 (vDateType == 2) { 如果 (vDateValue.length == 4) { vDateName.值 = vDateValue+strSeperator; } 如果 (vDateValue.length == 7) { vDateName.值 = vDateValue+strSeperator; } } 如果 (vDateType == 3) { 如果 (vDateValue.length == 2) { vDateName.值 = vDateValue+strSeperator; } 如果 (vDateValue.length == 5) { vDateName.值 = vDateValue+strSeperator; } } 返回 true; } } 如果 (vDateValue.length == 10 && dateCheck) { 如果 (!dateValid(vDateName)) { // 取消注释下一行代码,用于调试 dateValid() 函数错误消息 // 警报(错误); alert("日期无效\n请重新输入"); vDateName.focus(); vDateName.选择(); } } 返回 false; } 别的 { // 如果值不在字符串中,则返回字符串减去最后一个值 // 键已输入。 如果(isNav4) { vDateName.值 = “”; vDateName.focus(); vDateName.选择(); 返回 false; } 别的 { vDateName.值 = vDateName.值.substr(0,(vDateValue.length-1)); 返回 false; } } } }
答案1
在 Firefox 上按 CTRL+SHIFT+J,进入错误控制台,然后重新加载页面。查看会出现什么错误。