2010-05-30 4 views
0

PHP 및 jQuery로 양식을 개발 중입니다. 그것은 파이어 폭스하지만 IE에서 잘 작동HTML에서 onChange가 IE에서 작동하지 않습니다.

http://www.yamaha-motor.com.pe/extreme/php/yamaha/registro/FrmRegistro01.php

: 여기

는 링크입니다.

당신은 저에게 조언 할 수 있습니까 ??

감사

+0

무엇이 작동하지 않습니까? 그것은 파이어 폭스와 IE에서 나를 위해 작동합니다. – scunliffe

+1

항상 문제가있는 IE의 버전을 포함 시키십시오. 다양한 엔진이 사용되며 널리 사용되며 여러 가지 단점이 있습니다. –

+0

목록에서 선택했을 때 표시되는 체크 표시에 대해 이야기하고 있다면 IE8, IE7 및 Quirks 모드에서 저에게 적합합니다. 기대하는 다른 행동이 있습니까? – user113716

답변

0

방금 ​​해결했습니다.

수정

같은 것을하지 말아야하는 것이었다 :

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()"); 

을 ... 그리고 이렇게 :

var select1 = document.getElementById("cbxMeses"); 
select1.changed = false; 
select1.onchange = fn_mesSeleccionado; 

은 분명히 IE의 모든 DOM 요소가 렌더링되기 전에 모든 JavaScrpit 코드를 실행하려고합니다.

4

그럼 페이지가 너무 복잡하고 당신이 입증 원하는 것을 정확히 문제가 알기 어려운 잘라 내기 및 붙여 넣기 코드와 함께 산재 해있다. 그러나 스크립트를 간략히 살펴보면 addEventListener에 대해 스니핑 중이며 특히 IE에 대해 스니핑을하고 완전히 다른 작업을 수행하고 있음을 알 수 있습니다. 그 중 많은 부분이 주석으로 처리됩니다. 그래서 당신은 무엇을 기대합니까?

$('select#cbxMeses').attr('onchange', "javascript:fn_mesSeleccionado()"); 

이것은 명백한 잘못입니다. 첫째, 이벤트 핸들러 속성이 javascript:이 아니어야합니다 (이는 javascript: 의사 URL에만 해당하며 도 사용하지 말아야합니다 ()).

하지만 어쨌든 이것은 이벤트 핸들러를 요소에 첨부하는 것이 아닙니다. 그것은 IE에서 작동하지 않을 것이고, JS 코드를 문자열에 넣는 것은 추악하고 비효율적입니다. 함수 (함수 이름 또는 인라인 function() { ... })와 jQuery의 이벤트 바인딩 메소드 중 하나를 사용하십시오.

$(document).ready(function() { 
    $('#cbxMeses').change(fn_mesSeleccionado); 
    $('#cbxAnos').change(fn_anoSeleccionado); 
    ... 
}); 

이 모든 곳에서 사용할 수 있습니다. 브라우저를 전혀 스니핑 할 필요가 없습니다!

+0

나는 이미 해결책을 발견했습니다 ... 문제는 IE에서 스크립트를 사용할 때의 문제 때문이었습니다. IE는 모든 DOM이로드되기 전에 JS 스크립트를 실행하려고 했으므로 jQuery를 통해 일부 SELECT 요소에 추가 한 이벤트 리스너는 작동하지만 현재는 작동하지 않습니다. 그런데 ... If nothing have nothing 리스너에서 함수의 이름을 가진 문자열을 배치하는 것이 좋지 않습니다 ... 동일합니다. –

관련 문제