Ошибка JavaScript в каждом браузере, кроме Firefox - PullRequest
2 голосов
/ 24 июля 2010

Я тяну волосы за это.У меня есть этот бит 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;

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

Ответы [ 2 ]

2 голосов
/ 24 июля 2010

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

Длинные строки должны выглядеть так:

var longString = "something something something" +
  "more something something something " +
  "and so on";
1 голос
/ 24 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...