Форма отправляется правильно в Chrome / FF, но не работает в IE / Safari - PullRequest
2 голосов
/ 12 апреля 2010

У меня есть форма с кнопкой отправки CSS. Когда нажимают кнопку подтверждения, я вызываю функцию, которая выполняет:

document.forms["request"].onsubmit();

Что должно случиться, так это то, что должен быть запущен метод onsmit. Это работает правильно в Chrome / FF, но по какой-то причине IE / Safari пропустит функцию onsubmit и просто добавит параметр "address =" в URL, как если бы он отправлял форму и игнорировал функцию onsubmit. Вот код для формы:

      <form id="request" method="get" onsubmit="addLocation(this.address.value); return false;">
        <br>
        <label style="position:relative;left:5px;" for="address">Enter an intersection or address:
        </label>
        <br>
        <br>
        <input style="height:35px; width:300px;position:relative;bottom:1px;left:10px;" id="address" name="address" class="required address"/>
        <a style="float:right;right:120px;position:relative;" class="button" onclick="submit();">
          <span>Submit Request
          </span>
        </a>
      </form>

и ниже приведены некоторые соответствующие функции js:

function addLocation(address) {
    if (geocoder) {
        geocoder.getLocations(address, function (point) {
            if (!point) {
                alert(address + " not found");
            } else {
                if (point.Placemark[0].address != submittedString) {
                    submittedString = point.Placemark[0].address;
                    addRow(point.Placemark[0].address);
                    req = "addrequest?truck=" + "coolhaus&address=" + point.Placemark[0].address;
                    alert(req);
                    addRequest(req);
                    request.onreadystatechange = function () {}
                }
            }
        });
    }
}

function addRequest(req) {
    try {
        request = new XMLHttpRequest();
    } catch (e) {
        try {
            request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
            alert("XMLHttpRequest error: " + e);
        }
    }
    request.open("GET", req, true);
    request.send(null);
    return request;
}

Вы можете проверить форму здесь:

http://la.truxmap.com/request?id=grillmastersla

Большое спасибо!

1 Ответ

3 голосов
/ 12 апреля 2010

Не называйте вашу функцию «submit», в форме уже есть метод с таким именем, поэтому он может конфликтовать с этим.

Это метод submit, который можно вызвать для отправки формы, а не событие onsubmit. Итак, ваш код для размещения формы должен быть:

document.forms["request"].submit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...