2010-07-23 4 views
2

Я вытягиваю свои волосы из-за этого. У меня есть этот бит javascript, который асинхронно извлекает данные для календаря событий. В основном, когда вы нажимаете на день месяца, появляется маленький пользовательский интерфейс, и текстовая область заполняется данными, которые извлекаются. На этом пользовательском интерфейсе находятся две кнопки отправки: одна для сохранения изменений и одна для удаления события, если оно существует. Моя цель - отключить кнопку удаления, если текстовая область не заполняется событием. Вот мой код:Ошибка Javascript в каждом браузере, кроме Firefox

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; 

Firefox обрабатывает это прекрасно, но Safari, Chrome, Opera и IE все бросить hissy припадки. Они возвращаются к моей резервной функции для пользователей, у которых нет javascript. Что я делаю не так?

+0

Что сказал отладчик Chromes? –

+0

Использовать jQuery !!!!! – ChaosPandion

+0

Я действительно не смотрел. Но я не очень хорошо разбираюсь в том, как его использовать. Я посмотрю, смогу ли я это понять. – vince88

ответ

1

Я только что подумал. Поскольку delete - это ключевое слово, вы действительно не должны использовать его как имя поля формы. Некоторые реализации могут быть более строгими, чем другие, в отношении использования зарезервированных слов. Попробуйте переименовать его в нечто другое.

+0

Да, это оно. Я получил совет от одного из комментариев и посмотрел на отладчик Chrome. В нем говорится, что delete выбрасывает исключение, поэтому я переименовал его, и он работает сейчас. Благодарю. – vince88

+0

@ vince - Удачи, и не забудьте попробовать jQuery. – ChaosPandion

2

Многострочные строковые константы являются нестандартными. Вы не можете сделать это в других браузерах.

Длинные строки должны выглядеть следующим образом:

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

Спасибо за совет. Я буду помнить об этом, но я не думаю, что это проблема. Я изменил его, и это не изменило ситуацию. – vince88

+0

Строчные продолжения, добавленные в стандарт ECMAScript в версии 5, так что это будет некоторое время, прежде чем все браузеры его поддержат. – ChaosPandion

+0

Да, я знаю, что это в версии 5, но это не поможет вам в IE7 :-) – Pointy

Смежные вопросы