2013-08-04 7 views
0

자바 스크립트 함수를 사용하는 다른 방법을 찾아야합니다. 여기 자바 스크립트 함수에 DOM 전달 인수

var b = ce("input"); // Here I create element. 
b.setAttribute("name", "g4"); 
b.value = "Centimetrais(pvz:187.5)"; 
b.onfocus = function() { remv(this); }; 
b.onchange = function() { abs(this); }; 
b.onkeypress = function() { on(event); }; // I need to change this place becose then I pass "event" argument function doesn't work. 
ac(1, "", b); // Here I appendChild element in form. 

는 기능입니다 : 작동 IE에서

function on(evt) { 
    var theEvent = evt|| window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode(key); 
    var regex = /^[0-9.,]+$/; 
    if(!regex.test(key)) { 
    theEvent.returnValue = false; 
    if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
} 

크롬하지만 모질라하지 않습니다. 어떤 대안 파이어 폭스에 대한 수정 방법?

"car", "dog"와 같은 다른 인수를 전달하면이 경로에서 다른 함수가 mozilla에서 작동합니다. 예를 들어 내가 제대로 질문을 이해한다면

firstFunction(); 
function firstFunction() { 
var b = ce("input"); // Here I create element. 
b.onkeypress = function() { on("hi!"); }; 
ac(1, "", b); // Here I appendChild element in form. 
} 
function on(evt) { 
    alert(evt); 
} 
+1

당신은'b.onkeypress = function (event) {on (event); };'? – nnnnnn

+0

아니요. 시도하지 않았어. – WVW

+0

예, 작동합니다. :) 고맙습니다. – WVW

답변

0

는, 문제는 메인 처리기에서 이벤트 인수를 허용하지 않을 것입니다. 예를 들어, 첫 번째 예제 :

b.onkeypress = function() { on(event); }; 

이 당신은 on에 그 일을하고

b.onkeypress = function(e) { on(e || window.event); }; 
// Changes here --------^ and --^^^^^^^^^^^^ 

해야하지만 on에, 너무 늦기 이미, 당신은 제공된 인수를 잃었다 onXYZ 기능.

크롬과 IE에서 코드가 작동하는 이유는 IE가 처리기에 실제로 전달하는 코드 대신 글로벌 event 개체를 사용한다는 것입니다 (현대 버전 외에도). Chrome은 최대 호환성을 위해 해당 동작을 복제합니다 그것을 기대하는 웹 사이트가 있습니다. Firefox는 그렇지 않습니다.