2010-04-12 91 views
2

我有一個帶有CSS提交按鈕的表單。當點擊提交按鈕,我調用執行的函數:表單在Chrome/FF中正確提交,但在IE/Safari中完全失敗

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

非常感謝!

+0

奇怪的是,構建在相同引擎上的Chrome和Safari的行爲會有所不同。 – Duncan 2010-04-12 05:30:32

回答

3

不要命名你的函數「提交」,已經有一個名字的形式的方法,所以它可以與此衝突。

這是submit方法,您可以調用提交表單,而不是onsubmit事件。因此,您發佈表單的代碼應該爲:

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