2012-01-13 29 views
7

Uygulamamda açılan, jquery kullanarak basamaklı açılır, şimdi benim sorunum IE9, Firefox, Opera ve Safari ile sorunsuz çalışıyor ancak IE7, IE8 gibi tarayıcılarla çalışmaz .IndexOf IE8 Tarayıcıda Desteklenmiyor

Ben indexOf kaldırarak denedim ama hala aynı hatayı veriyor, sorun için sörf ve bu hata benim jquery kodu indexOf kaynaklanmaktadır bulundu ..

Not: herhangi bir çalışma etrafında var mı indeksOf kaldırmak için telerik betik, coz yeni ben sadece kendi script in indexOf bulabilirsiniz. Aşağıda

Kod geçerli: ..

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(); 
    } 
}); 

}

teşekkür eder

Array s indexOf() yöntemi IE uygulanmadı
+1

Lütfen kodunuzu gönderir misiniz? –

+1

AFAIK, indexOf, ie7 ve 8'de iyi çalışır. Lütfen bazı kodları gösteriniz – Johan

+0

@Archer O, ie9'da değil, 7 + 8'de çalıştığını söyledi. Her neyse, hepsinde çalışmalı – Johan

cevap

26

< 9. jQuery kullandığınız gibi $.inArray()'dan yararlanabilir, örn.

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

Dökümantasyon: http://api.jquery.com/jQuery.inArray/.

22

documentation for indexOf on MDN, JavaScript 1.6'yı desteklemeyen tarayıcılarda destek ekleyecek bir pollyfill içerir.

Varolan kodu yeniden yazmak zorunda kalmamak için dosyayı açabilirsiniz.

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; 
    } 
}