javascript - 表单在 Chrome/FF 中正确提交,但在 IE/Safari 中完全失败

标签 javascript html css internet-explorer safari

我有一个带有 css 提交按钮的表单。当单击提交按钮时,我调用一个执行的函数:

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

然后,应该触发 onsubmit 方法。这在 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

非常感谢!

最佳答案

不要将函数命名为“submit”,表单中已经有一个具有该名称的方法,因此可能会与之发生冲突。

这是您可以调用来提交表单的 submit 方法,而不是 onsubmit 事件。因此,您发布表单的代码应该是:

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

关于javascript - 表单在 Chrome/FF 中正确提交,但在 IE/Safari 中完全失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2619994/

相关文章:

css - 如何设置固定位置,即不滚动 <li> 元素及其子元素 <ul>?

javascript - Three.js BufferGeometry变形

javascript - 删除子节点,除了首先使用 javascript

jquery - 如何在 HTML5 中设计 Android 主屏幕搜索框?

javascript - 动态改变CSS样式中的图片

html - 奇怪的填充被添加到我的网页

javascript - 通过表单中的隐藏输入字段传递当前页面 URL

javascript - 响应式轮播 React Material -ui

html - 将省略号应用于多行文本

html - 使 flex 元素像显示 block 一样