【问题标题】:Form submits correctly in Chrome/FF, but fails altogether in IE/Safari表单在 Chrome/FF 中正确提交,但在 IE/Safari 中完全失败
【发布时间】:2010-04-12 05:12:01
【问题描述】:

我有一个带有 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

非常感谢!

【问题讨论】:

  • 奇怪的是,Chrome 和 Safari 构建在同一个引擎上,表现却不同。

标签: javascript html css internet-explorer safari


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多