2012-01-13 4 views
7

jquery를 사용하여 캐스케이드 된 내 응용 프로그램에 계단식 드롭 다운이 있습니다. 이제 내 문제는 IE9, Firefox, Opera 및 Safari에서 원활하게 작동하지만 IE7, IE8 등의 브라우저에서 작동하지 않습니다. .IndexOf IE8 브라우저에서 지원되지 않습니다.

내가 같이 IndexOf를 제거하여 그것을 시도했지만 여전히 같은 오류를주고, 문제에 대한 서핑하고 오류가 내 jQuery 코드에서 같이 IndexOf 때문이다 발견 ..

참고 : 모든 작업은 주변에 있는가 telerik 스크립트에서 indexOf를 제거하고 새로운 스크립트 만 사용하여 indexOf를 찾을 수 있습니다. 다음은

는 코드입니다 ..

function OnClientSelectedIndexChanged(sender, eventArgs) { 
var senderId = sender.get_id().toString(); 

var uniqueName = senderId.substring(senderId.lastIndexOf('_'), senderId.length); 

if(senderId.indexOf("drpdwnCondition") > 0) 
{ 
    return false; 
} 

var selectedItem = eventArgs.get_item(); 
var selectedValue = selectedItem.get_value().split('_'); 
$.ajax({ type: "POST", async: true, 
    url: "/SalesRepresentativeMonitoring.aspx/GetData", contentType: "application/json; charset=utf-8", 
    data: "{value:" + JSON.stringify(selectedValue[1]) + "}", dataType: "json", 
    success: function (msg) { 
     var resultAsJson = msg.d // your return result is JS array 
     // Now you can loop over the array to get each object 
     var cnditionCombo = $find("ctl00_ContentPlaceHolder1_radDock_C_Filter_drpdwnCondition" + uniqueName.toString()); 
     cnditionCombo.clearSelection(); 
     cnditionCombo.trackChanges(); 
     cnditionCombo.clearItems(); 
     for (var i in resultAsJson) { 
      //alert(resultAsJson[i]); 
      var item = new Telerik.Web.UI.RadComboBoxItem(); 
      item.set_text(resultAsJson[i]); 
      item.set_value(resultAsJson[i]); 
      cnditionCombo.get_items().add(item); 
     } 
     var itemAtIndex = cnditionCombo.get_items().getItem(0); //get item in detailCB 
     itemAtIndex.select(); 
     cnditionCombo.commitChanges(); 
    } 
}); 

}

당신을 하라구요

Array의의 indexOf() 방법은 IE에서 구현되지
+1

코드를 올리시겠습니까? –

+1

AFAIK, indexOf는 ie7과 8에서 잘 작동합니다. – Johan

+0

@Archer 그는 ie9와 7 + 8에서 작동하지 않는다고 말했습니다 : 어쨌든, 모두에서 작동해야합니다. – Johan

답변

26

< 9. jQuery를 당신이 사용하고있는 것처럼 $.inArray()을 사용할 수 있습니다.

var arr = ["foo", "bar", "baz"], 
    bazIndex = $.inArray("baz", arr), // 2 
    doesntExistIndex = $.inArray("notThere", arr); // -1 

다음은 설명서입니다. http://api.jquery.com/jQuery.inArray/입니다.

22

documentation for indexOf on MDN에는 자바 스크립트 1.6을 지원하지 않는 브라우저에서 지원 기능을 추가하는 폴리 필이 포함되어 있습니다.

기존 코드를 다시 작성하지 않아도 될 수 있습니다.

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement /*, fromIndex */) { 
     "use strict"; 
     if (this == null) { 
      throw new TypeError(); 
     } 
     var t = Object(this); 
     var len = t.length >>> 0; 
     if (len === 0) { 
      return -1; 
     } 
     var n = 0; 
     if (arguments.length > 0) { 
      n = Number(arguments[1]); 
      if (n != n) { // shortcut for verifying if it's NaN 
       n = 0; 
      } else if (n != 0 && n != Infinity && n != -Infinity) { 
       n = (n > 0 || -1) * Math.floor(Math.abs(n)); 
      } 
     } 
     if (n >= len) { 
      return -1; 
     } 
     var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); 
     for (; k < len; k++) { 
      if (k in t && t[k] === searchElement) { 
       return k; 
      } 
     } 
     return -1; 
    } 
} 
관련 문제