2016-11-11 73 views
-4

event.preventDefault();不能在Firefox中工作。event.preventDefault();不工作在Firefox

function submitProffs() { 

     var VacBrand = document.getElementById("txtAcBrand").value; 



     if (VacBrand == "") { 

      alert("Please Select your Ac Brand!"); 
      event.preventDefault(); 
      } 
} 
+1

just in firefox? –

回答

2

function submitProffs(event)

function submitProffs(event) { 
    var vacBrand = document.getElementById("txtAcBrand").value; 
    if (vacBrand == "") { 
     alert("Please Select your Ac Brand!"); 
     event.preventDefault(); 
    } 
} 
1

event應用event是在某些瀏覽器的全局變量。在Firefox中沒有全球的event變量,你不應該依賴這個變量。使用傳遞給事件處理程序的事件對象。

看來這個變量是其他瀏覽器(如Google Chrome)已經實現的許多IE非標準功能之一(如document.allinnerText)。

1

你需要傳遞參數eventsubmitProffs功能

// save global scope 
(function(){ 
'use strict'; 
    // protect from hoisting 
    var mainFunc, 
     submitProffs; 

    submitProffs = function (event) { 
    var VacBrand = document.getElementById("txtAcBrand").value; 
    if (VacBrand == "") { 
     alert("Please Select your Ac Brand!"); 

     event.preventDefault(); 
     // if you need disable bubbling 
     // event.stopPropagation(); 
    } 
    }; 

    mainFunc = function (event) { 
    // listen event on element 
    // replace 'click' to your event 
    document.addEventListener("click", submitProffs, false); 
    }; 
    // code run when html DOM ready 
    document.addEventListener("DOMContentLoaded", mainFunc); 
}()); 

它是如何工作看到有https://jsfiddle.net/2gew6nLo/

+0

是的,我同意。 Javascript有很多功能=) –

0

在FF/Mozilla瀏覽器的事件被傳遞給事件處理程序作爲一個參數。在IE中使用類似下面的內容來解決丟失的事件參數。

function onlyNumeric(e) 
{ 
    if (!e) { 
     e = window.event; 
    } 

    ... 
}