2012-01-13 12 views
7

में समर्थित नहीं है, तो मैंने अपने आवेदन में ड्रॉपडाउन को कैस्केड किया है, jquery का उपयोग करके कैस्केड किया है, अब मेरी समस्या यह है कि यह आईई 9, फ़ायरफ़ॉक्स, ओपेरा और सफारी के साथ आसानी से काम कर रही है लेकिन आईई 7, आईई 8 आदि जैसे किसी भी ब्राउज़र के साथ काम नहीं करती है। ।इंडेक्स अगर IE8 ब्राउज़र

मैं इस समस्या के लिए सर्फ़ किया और पाया कि त्रुटि मेरी jQuery कोड में 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(); 
    } 
}); 

}

आपको धन्यवाद ..

+1

क्या आप अपना कोड पोस्ट कर सकते हैं। –

+1

AFAIK, indexOf यानी 7 और 8 में अच्छी तरह से काम करता है। कृपया कुछ कोड दिखाएं – Johan

+0

@ आर्चर उन्होंने कहा कि यह यानी 9 में काम करता है, न कि 7 + 8 :) वैसे भी, यह उन सभी में काम करना चाहिए – Johan

उत्तर

26

Array के indexOf() विधि IE में लागू नहीं किया गया < 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 में एक pollyfill शामिल है जो ब्राउज़र में समर्थन जोड़ देगा जो जावास्क्रिप्ट 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; 
    } 
}