2010-07-23 37 views
2

我正在拉我的頭髮。我有這個javascript的異步獲取事件日曆的數據。基本上,當你點擊一個月的某一天時,會彈出一個小的UI,並且文本區域會被獲取的數據填充。在此UI上有兩個提交按鈕:一個用於保存更改,另一個用於刪除事件(如果存在)。我的目標是禁用刪除按鈕,除非文本區域填充了事件。這裏是我的代碼:除Firefox以外的每個瀏覽器的Javascript錯誤

function editDialog(date,vis) 
{ 
    if(vis == "show") 
    { 
     var event="Loading..."; 

     if (window.XMLHttpRequest) 
     { 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.onreadystatechange=function() 
     { 

      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       event = xmlhttp.responseText; 
      } 
      document.getElementById('editwrapper').innerHTML="<div id='editdiv'>\ 
      <div><span class='bold'>"+date+" </span><div style='display: inline; float: right;'><a href='#' onclick=\"return editDialog('"+date+"','hide')\">Close</a></div><hr id='line'> \ 
      <form method='get' action='' onsubmit=\"return editDialog(this.newdate.value, 'show')\">\ 
      <label for='newdate'>Jump to: </label>\ 
      <input type='text' name='newdate' size='10'/>\ 
      <input type='submit' name='go' value='Go'>\ 
      </form>\ 
      <form style='display: inline;' action='' name='saveform' method='get' onsubmit='return instantUpdate(this.date.value,this.event.value)'>\ 
      <textarea name='event' rows='10' cols='40' onkeypress='saveform.edit.disabled=false'>"+event+"</textarea>\ 
      <input type='hidden' name='date' value='"+date+"'>\ 
      <input type='submit' name='edit' value='Save' disabled='disabled'></form> &nbsp; <form name='deleteform' style='display: inline; float: right;' action='' method='get' onsubmit=\"return instantUpdate(saveform.date.value,'')\"> <input name='deletebutton' value='Delete' type='submit'></form>\ 
      </div>\ 
      </div>"; 

      if(event=="" || event=="Loading...") document.deleteform.delete.disabled = true; 
     } 
     xmlhttp.open("GET","events.php?action=read&date="+date,true); 
     xmlhttp.send(); } } 

問題在於這樣的說法:

if(event=="" || event=="Loading...") document.deleteform.deletebutton.disabled = true; 

火狐處理它只是罰款,但Safari瀏覽器,Chrome瀏覽器,Opera和IE都扔噓聲像擬合。他們恢復到我沒有啓用JavaScript的用戶的後備功能。我究竟做錯了什麼?

+0

Chromes調試器說了什麼? – 2010-07-23 22:25:17

+0

使用jQuery !!!!! – ChaosPandion 2010-07-23 22:26:55

+0

我其實沒有看。但我並不十分熟悉如何使用它。我會看看我能否弄清楚。 – vince88 2010-07-23 22:27:22

回答

1

我只是有一個想法。由於delete是一個關鍵字,你真的不應該將它用作表單字段名稱。在使用保留字方面,一些實現可能比其他實現更嚴格。嘗試將其重命名爲其他內容。

+0

是的,這是它。我接受了其中一條評論的建議,並查看了Chrome的調試器。它說刪除是拋出一個異常,所以我重命名它,現在它工作。謝謝。 – vince88 2010-07-23 22:39:12

+0

@vince - 祝你好運,不要忘記試用jQuery。 – ChaosPandion 2010-07-23 22:40:09

2

多行字符串常量是非標準的。你不能在其他瀏覽器中做到這一點。

長字符串必須是這樣的:

var longString = "something something something" + 
    "more something something something " + 
    "and so on"; 
+0

感謝您的建議。我會記住它,但我不認爲這是麻煩。我改變了它並沒有什麼不同。 – vince88 2010-07-23 22:32:30

+0

在第5版中添加到ECMAScript標準中的行繼續,所以在所有瀏覽器都支持它之前還需要一段時間。 – ChaosPandion 2010-07-23 22:32:42

+0

是的,我知道它在v.5中,但這不會幫助你在IE7中:-) – Pointy 2010-07-23 22:42:13

相關問題