복붙노트

[JQUERY] jQuery를 IE에서 .change ()를 인식하기

JQUERY

jQuery를 IE에서 .change ()를 인식하기

해결법


  1. 1..click 대신 .change로 사용해보십시오.

    .click 대신 .change로 사용해보십시오.


  2. 2.대신 변화의 클릭 이벤트를 사용하는 데 문제가 동일한 무선 상자를 선택하면 사용자가 이벤트를 얻을 수있다 (즉, 실제로 변경되지 않았습니다). 새 값이 이전과는 다른 것을 확인할 경우에 필터링 할 수 있습니다. 나는이 조금 성가신 찾을 수 있습니다.

    대신 변화의 클릭 이벤트를 사용하는 데 문제가 동일한 무선 상자를 선택하면 사용자가 이벤트를 얻을 수있다 (즉, 실제로 변경되지 않았습니다). 새 값이 이전과는 다른 것을 확인할 경우에 필터링 할 수 있습니다. 나는이 조금 성가신 찾을 수 있습니다.

    당신은 변경 이벤트를 사용하는 경우, 당신은 당신이 IE의 다른 요소를 클릭 한 후에는 변화를 인식 할 수 있음을 알 수 있습니다. 당신은 클릭 이벤트에서 () 흐림 호출 할 경우,이 화재로 변경 이벤트가 발생할 수 있습니다 (라디오 상자가 실제로있는 경우에만 변경).

    여기에 내가 그것을하고있어 방법은 다음과 같습니다

    // This is the hack for IE
    if ($.browser.msie) {
      $("#viewByOrg").click(function() {
        this.blur();
        this.focus();
      });
    }
    
    $("#viewByOrg").change(function() {
      // Do stuff here
    });
    

    지금 당신은 정상처럼 변경 이벤트를 사용할 수 있습니다.

    편집 : 접근성 문제 (아래 바비의 의견을 참조) 방지하기 위해 초점 ()에 대한 호출을 추가했습니다.


  3. 3.당신이 IE의 onpropertychange 이벤트를 시도? 이 차이가 있는지 저는 잘 모릅니다하지만 그것은 아마도 가치의 시도이다. 값이 JS 코드를 통해 업데이트 할 때 IE는 변경 이벤트를 트리거하지 않지만 아마도 onpropertychange이 인스턴스에서 작동합니다.

    당신이 IE의 onpropertychange 이벤트를 시도? 이 차이가 있는지 저는 잘 모릅니다하지만 그것은 아마도 가치의 시도이다. 값이 JS 코드를 통해 업데이트 할 때 IE는 변경 이벤트를 트리거하지 않지만 아마도 onpropertychange이 인스턴스에서 작동합니다.

    $("#viewByOrg").bind($.browser.msie? 'propertychange': 'change', function(e) {
      e.preventDefault(); // Your code here 
    }); 
    

  4. 4.이 역시 작동합니다 :

    이 역시 작동합니다 :

    $(document).ready(function(){
       $(".hiddenOnLoad").hide();
       $("#viewByOrg, #viewByProduct").bind(($.browser.msie ? "click" : "change"), function () {
                            $(".visibleOnLoad").show();
                            $(".hiddenOnLoad").hide();
                        });
    });
    

    감사 부두. 이것은 매우 도움이되었다.


  5. 5.다른 브라우저는 onchange이다에서 IE에서 당신은 클릭 이벤트를 사용해야합니다. 귀하의 기능이 될 수

    다른 브라우저는 onchange이다에서 IE에서 당신은 클릭 이벤트를 사용해야합니다. 귀하의 기능이 될 수

    $(document).ready(function(){
       $(".hiddenOnLoad").hide();
       var evt = $.browser.msie ? "click" : "change";
       $("#viewByOrg").bind(evt, function () {
                            $(".visibleOnLoad").show();
                            $(".hiddenOnLoad").hide();
                        });
    
       $("#viewByProduct").bind(evt, function () {
                            $(".visibleOnLoad").hide();
                            $(".hiddenOnLoad").show();
                        });     
    });
    

  6. 6.이 플러그인을 추가

    이 플러그인을 추가

    jQuery.fn.radioChange = function(newFn){
        this.bind(jQuery.browser.msie? "click" : "change", newFn);
    }
    

    그때

    $(function(){
        $("radioBtnSelector").radioChange(function(){
            //do stuff
        });
    });
    

  7. 7.내가 입력 텍스트와 같은 문제가 있었다.

    내가 입력 텍스트와 같은 문제가 있었다.

    나는 변경 :

    $("#myinput").change(function() { "alert('I changed')" });
    

    ...에

    $("#myinput").attr("onChange", "alert('I changed')");
    

    모든 것이 나를 위해 잘 작동합니다!


  8. 8.이 요소를 클릭 할 때 변경 이벤트를 해고 IE를 말할 수있는 간단한 방법입니다 :

    이 요소를 클릭 할 때 변경 이벤트를 해고 IE를 말할 수있는 간단한 방법입니다 :

    if($.browser.msie) {
        $("#viewByOrg").click(function() {
            $(this).change();
        });
    }
    

    좀 더 폼 요소와 함께 작동하도록 더 일반적인 일이를 확장 할 수 :

    if($.browser.msie) {
        $("input, select").click(function() {
            $(this).change();
        });
        $("input, textarea").keyup(function() {
            $(this).change();
        });
    }
    

  9. 9.나는이 IE 알려진 문제인지 확인 꽤 있어요. 이 문제를 해결해야하는 온 클릭 이벤트에 대한 처리기를 추가 :

    나는이 IE 알려진 문제인지 확인 꽤 있어요. 이 문제를 해결해야하는 온 클릭 이벤트에 대한 처리기를 추가 :

    $(document).ready(function(){
    
        $(".hiddenOnLoad").hide();
    
        $("#viewByOrg").change(function () {
            $(".visibleOnLoad").show();
            $(".hiddenOnLoad").hide();
        });
    
        $("#viewByOrg").click(function () {
            $(".visibleOnLoad").show();
            $(".hiddenOnLoad").hide();
        });
    
        $("#viewByProduct").change(function () {
            $(".visibleOnLoad").hide();
            $(".hiddenOnLoad").show();
        });     
    
        $("#viewByProduct").click(function () {
            $(".visibleOnLoad").hide();
            $(".hiddenOnLoad").show();
        });     
    });
    

  10. 10.IE에서 힘 라디오와 체크 박스는 "변화"이벤트를 트리거합니다 :

    IE에서 힘 라디오와 체크 박스는 "변화"이벤트를 트리거합니다 :

    if($.browser.msie && $.browser.version < 8)
      $('input[type=radio],[type=checkbox]').live('click', function(){
        $(this).trigger('change');
      });
    

  11. 11.JQuery와 1.6로이 그것이 그것에 대한 생각 ... 감사합니다 신하지만 고정하지 않도록 때 ... 더 이상 문제가되지 않습니다

    JQuery와 1.6로이 그것이 그것에 대한 생각 ... 감사합니다 신하지만 고정하지 않도록 때 ... 더 이상 문제가되지 않습니다


  12. 12.당신이 1.5.1에 ​​jQuery를 버전을 변경하는 경우, 당신은 당신의 코드를 조정할 필요가 없습니다. 그리고 IE9은에 완벽 듣다 줘야 :

    당신이 1.5.1에 ​​jQuery를 버전을 변경하는 경우, 당신은 당신의 코드를 조정할 필요가 없습니다. 그리고 IE9은에 완벽 듣다 줘야 :

    $(SELECTOR).change(function() {
        // Shizzle
    });
    

    http://code.jquery.com/jquery-1.5.1.min.js


  13. 13.클릭 작품과 트릭 ...하지만 당신은 라디오의 올바른 상태를 얻거나 당신이 사용할 수있는 체크 박스하려는 경우 :

    클릭 작품과 트릭 ...하지만 당신은 라디오의 올바른 상태를 얻거나 당신이 사용할 수있는 체크 박스하려는 경우 :

    (function($) {
        $('input[type=checkbox], input[type=radio]').live('click', function() {
           var $this = $(this);
           setTimeout(function() {
              $this.trigger('changeIE'); 
           }, 10) 
        });
    })(jQuery);
    
    $(selector).bind($.browser.msie && $.browser.version <= 8 ? 'changeIE' : 'change', function() {
      // do whatever you want
    })
    

  14. 14.IMO 대신 변화의 클릭을 사용하면 즉 행동이 다를 수 있습니다. 차라리 타이머 (setTimout)를 사용하여 변경 이벤트 동작을 에뮬레이션 것입니다.

    IMO 대신 변화의 클릭을 사용하면 즉 행동이 다를 수 있습니다. 차라리 타이머 (setTimout)를 사용하여 변경 이벤트 동작을 에뮬레이션 것입니다.

    같은 (경고 - 메모장 코드) :

    if ($.browser.msie) {
      var interval = 50;
      var changeHack = 'change-hac';
      var select = $("#viewByOrg");
      select.data(changeHack) = select.val();
      var checkVal=function() {
        var oldVal = select.data(changeHack);
        var newVal = select.val();
        if (oldVal !== newVal) {
          select.data(changeHack, newVal);
          select.trigger('change')
        }
        setTimeout(changeHack, interval);
      }
      setTimeout(changeHack, interval);
    }
    
    $("#viewByOrg").change(function() {
      // Do stuff here
    });
    

  15. 15.그것은 나를 위해 작동이 시도

    그것은 나를 위해 작동이 시도

    $("#viewByOrg")
            .attr('onChange', $.browser.msie ? "$(this).data('onChange').apply(this)" : "")
            .change( function(){if(!$.browser.msie)$(this).data('onChange').apply(this)} )
            .data('onChange',function(){alert('put your codes here')});
    

  16. 16.이 사람을 도움이 될 수 있습니다 : 대신 폼의 ID로 시작하는, 선택 ID를 대상으로이 같은 변화에 양식을 제출 :

    이 사람을 도움이 될 수 있습니다 : 대신 폼의 ID로 시작하는, 선택 ID를 대상으로이 같은 변화에 양식을 제출 :

    <form id='filterIt' action='' method='post'>
      <select id='val' name='val'>
        <option value='1'>One</option>
        <option value='2'>Two</option>
        <option value='6'>Six</option>
      </select>
      <input type="submit" value="go" />
    </form>
    

    그리고 jQuery를 :

    $('#val').change(function(){
      $('#filterIt').submit();
    });
    

    (물론, 제출 버튼이 경우 자바 스크립트를 사용할 수 없습니다, 선택 사항입니다)


  17. 17.다음을 시도해보십시오

    다음을 시도해보십시오

    .bind($.browser.msie ? 'click' : 'change', function(event) {
    

  18. 18.IE에 대한 JQuery와의 .change () 함수 전에 .focus () 또는 ALL 기타 사항 서보 -OFF ()를 사용하지 말고, 다음 메신저 내 사이트에서 사용, 잘 작동합니다.

    IE에 대한 JQuery와의 .change () 함수 전에 .focus () 또는 ALL 기타 사항 서보 -OFF ()를 사용하지 말고, 다음 메신저 내 사이트에서 사용, 잘 작동합니다.

    감사


  19. 19.

    //global
    var prev_value = ""; 
    
    $(document).ready(function () {
    
     if (jQuery.browser.msie && $.browser.version < 8)
          $('input:not(:submit):not(:button):not(:hidden), select, textarea').bind("focus", function () { 
             prev_value = $(this).val();
    
           }).bind("blur", function () { 
             if($(this).val() != prev_value)
             has_changes = true;
           });
    }
    

  20. 20.IE에서 잘 심지어 처음 작업하는 각 대신 변경 / 클릭의 사용뿐만 아니라 다른 브라우저로 시도하십시오

    IE에서 잘 심지어 처음 작업하는 각 대신 변경 / 클릭의 사용뿐만 아니라 다른 브라우저로 시도하십시오

    첫 번째 시간이 작동하지 않음

    $("#checkboxid").**change**(function () {
    
    });
    

    근무 미세도 처음

    $("#checkboxid").**each**(function () {
    
    });
    
  21. from https://stackoverflow.com/questions/208471/getting-jquery-to-recognise-change-in-ie by cc-by-sa and MIT license