2011-03-31 5 views
0

많은 검색과 조정을 한 후에, 저는 잘못 된 것이 무엇인지 알아낼 수 없습니다.IE, Jquery 및 formy goodness가 작동하지 않습니다.

문제 : IE는 다음 작품 파이어 폭스와 크롬에서

$(document).ready($(function() { ... 

설정 내 기능을 준수하지 않는 것 :

IE에서
<form id='submit_new_date'> 
<input id='new_date' type='text' /> 
<input type='submit' value='submit' /> 
</form> 

$("#submit_new_date").live('submit', function (event) { 

    var date = $("#new_date").val(); 
    var employee = $("#employee_id").val(); 
    var boxcar = $("#boxcar_id").val(); 
    if (isDate(date)==false) { 
     return false; 
    } 
    event.preventDefault(); 
     $.ajax({ 
       url: 'view/create_new_grouping.php', 
       type: 'POST', 
       data: 'boxcar=' + boxcar + '&employee=' + employee + '&date=' + date, 
       success: function(response){ 
        $('#content').html(response); 
       } 
      }); 
    return false;  
    }); 

,이 작동하지 않습니다. 그냥 기본 게시물 작업을 수행합니다. 그래서 내가 거짓을 반환하고 거기에서 기본을 방어하는 이유입니다. 모든 통찰력은 인정 될 것이다.

아약스가 아시안 문제라고 생각하지 않습니다. 코드 블록을 전혀 실행하지 않는 것 같습니다. 경고를 걸어도 아무런 행동이 바뀌지 않습니다. 또한 Javascript와 html은 분명히 별개의 파일에 있습니다.

+0

해당 양식과 관련된 클릭 이벤트를 캡처하고 그 거품을 방지합니까? 그러면 제출 이벤트가 트리거되지 않을 수 있습니다. 그 외에도, 이런 종류의 작업에 라이브 이벤트를 사용하는 것은 꼭 필요한 것은 아닙니다. 문서 준비 핸들러에 핸들러를 등록하기 때문에. 라이브 이벤트는 비교적 새로운 이벤트이므로 버그가있을 수 있습니다. 그 외, 새로운 jQuery 버전으로 전환하여 버그가 해결되는지 확인할 수 있습니다. (바로 1.5.2) – skarmats

+0

구현이 필요하지 않을 수도 있습니다. 나는 스스로 가르치고 있으며 모범 사례를 알지 못할 수도 있습니다. 그러나, 내가 달성하고자하는 것은 PHP 스크립트에 여러 숨겨진 입력 필드가 있다는 것입니다. 무언가가 잘 안되면 사용자의 특정 입력을 원합니다. 양식을 사용하는 전적인 이유는 입력 필드에 무언가를 입력하고 버튼을 사용하지 않고 입력 할 수 있기 때문입니다. 그 동안 페이지에서 다른 입력을 캡처하고 새로운 PHP보기에 게시합니다. – Melissa

+0

그건 완전히 합법적인데 개념에는 아무런 문제가 없습니다. 'live()'대신'$ ("# submit_new_date"). submit (function (event) {...}); 이 경우에도 똑같이 잘 작동 할 것입니다. – skarmats

답변

0

당신이 jQuery를 <를 사용하여 사용하는 경우 업그레이드가 대신 제출 버튼에 직접 바인딩을 시도 할 수있는 옵션이없는 경우 .live('submit').live('click')

후 호출 할 경우 IE에서 bug했다 나타납니다 1.4.3.

$("#submit_new_date input[type='submit']").live("click", function(){ 
//stuff 
}); 

jsfiddle 예. 양식 (요소가 DOM에있는 DOM을 준비 후로드되지 않음) 동적이 아닌 경우

.live()

$("#submit_new_date").submit(function (event) { 
//do stuff 
}); 

또 다른 jsfiddle 필요하지 않습니다, 당신의 의견에 근거하여.

+0

어떤 경우에는 Enter 키를 사용하여 양식을 제출할 때 버튼이 활성화되지 않으므로 버튼에 바인딩하지 마십시오. 개인적으로 나는 form submit에서'live' 대신에'bind'를 사용하기 만합니다 : jQuery가 IE에서 submit 이벤트에 대한 버블 링의 부족을 해결하기 위해 매듭을 묶을 필요가 없기 때문에 신뢰할 수 있습니다. . – bobince

+0

양식이 제출되면 언제든지이 코드를 실행하기를 원하므로 완벽하게 사용하십시오. –

+0

고마워요! 이것은 매우 유용한 조언이었습니다. – Melissa

관련 문제