2011-05-13 57 views
0

我在Firefox中查看驗證錯誤時出現以下錯誤,它適用於Chrome和Safari。Firefox javascript錯誤

這是原來的代碼:

function MM_validateForm() { //v4.0 
    if (document.getElementById){ 
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; 
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]); 
     if (val) { nm=val.name; if ((val=val.value)!="") { 
     if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); 
      if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n'; 
     } else if (test!='R') { num = parseFloat(val); 
      if (isNaN(val)) errors+='- '+nm+' must contain a valid number no spaces.\n'; 
      if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); 
      min=test.substring(8,p); max=test.substring(p+1); 
      if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; 
     } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; } 
    } if (errors) alert('The following error(s) occurred:\n'+errors); 
    document.MM_returnValue = (errors == ''); 
} } 

這是我的新的JavaScript代碼來發送錯誤信息到id fterror一個div;

function MM_validateForm() { //v4.0 
    if (document.getElementById){ 
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; 
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]); 
     if (val) { nm=val.name; if ((val=val.value)!="") { 
     if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); 
      if (p<1 || p==(val.length-1)) errors+=' '+nm+' must contain an e-mail address.\n'; 
     } else if (test!='R') { num = parseFloat(val); 
      if (isNaN(val)) errors+='- '+nm+' must contain a valid number no spaces.\n'; 
      if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); 
      min=test.substring(8,p); max=test.substring(p+1); 
      if (num<min || max<num) errors+=' '+nm+' must contain a number between '+min+' and '+max+'.\n'; 
     } } } else if (test.charAt(0) == 'R') errors += ' '+nm+' is required.\n'; } 
    } if (errors) document.getElementById('fterror').innerText = "Please correct the following error(s): \n"+errors; 
    document.MM_returnValue = (errors == ''); 
    if (errors == '') document.getElementById('fterror').innerText = ""; 
} } 
+3

那就是一個嚴重搞砸了一段代碼。任何機會,你可以只使用Dreamweaver再次設置你的新規則? 如果不是,您應該嘗試查明腳本中的確切區別,然後幫助更容易。 – 2011-05-13 05:14:34

+0

請格式化您的代碼,提供一個說明錯誤的「工作」示例,準確描述您的期望以及實際發生的情況。此外,沒有看到電話或相關的HTML,你期待那些可能希望幫助你有一個水晶球。據我所知,兩位代碼之間的唯一區別是連字符如下:'errors + =' - '+ nm +''。我認爲這不會對運行此代碼的結果產生任何顯着影響,除了在字符串中明顯插入連字符。 – RobG 2011-05-13 05:34:38

+0

感謝您的迴應Pal,唯一的變化是3行代碼。錯誤消息顯示在警告框中,但我想將錯誤寫入div標籤。 – ollie 2011-05-13 05:34:56

回答

0

你需要設置innerHTML,而不是innerText爲它工作在Firefox:

document.getElementById('fterror').innerHTML = ... 
+0

我已經根據要求進行了更改,所有工作,非常感謝您的幫助:))) – ollie 2011-05-13 05:42:18