2014-09-10 57 views
0

我的代码似乎只在我有警报(“文档加载”)时才起作用。如果我删除它,它不再工作。它应该把重点放在特定的领域。只有在添加了alert()时,jQuery代码才有效

可能是问题,警报(“文档加载”)给它的代码时间执行之前,其余的火灾?

<style type='text/css'> 
    /* T */ 
    .comboItemContainer { 
     width: auto; 
     font-family: "Courier New", Courier, monospace; 
    } 

    .colOne { 
     border-right: 1px dashed gray; 
     float: left; 
     width: 100px; 
    } 



    .colTwo_NoDash { 
     float: left; 
     padding-left: 5px; 
     width: 350px; 
    } 


</style> 



<input type="text" name="test" id="test1" /><br /><br /> 
<div id="comboready"></div> 
<div id="comboload"></div> 
<div id="comboOrderTypes"></div> 

    <script> 


    $(document).ready(function() { 

     var data = [ 
        { "ID": 1, "Name": "John Smith", "Age": 45 }, 
        { "ID": 2, "Name": "Mary Johnson", "Age": 32 }, 
        { "ID": 3, "Name": "Bob Ferguson", "Age": 27 } 
     ]; 

     $("#comboready").igCombo({ 
      dataSource: data, //JSON Array defined above 
      valueKey: "ID", 
      textKey: "Name", 
      itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${ID}</div><div  class='colTwo_NoDash'>${Name}</div></div>" 

     }); 


     var data = [ 
     { "ID": 1, "Name": "John S", "Age": 45 }, 
     { "ID": 2, "Name": "Mary J", "Age": 32 }, 
     { "ID": 3, "Name": "Bob F", "Age": 27 } 
     ]; 

     $("#comboload").igCombo({ 
      dataSource: data, //JSON Array defined above 
      valueKey: "ID", 
      textKey: "Name", 
      itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${ID}</div><div class='colTwo_NoDash'>${Name}</div></div>" 

     }); 


     // OrderType Combobox - On Page Load 
     $.get("../order/Json_OrderTypes", function (data) { 
      //Get 
      $("#comboOrderTypes").igCombo({ 
       dataSource: data,    
       valueKey: "Order_Type", 
       textKey: "Order_Type", 
       width: "100px", 
       dropDownWidth: 500, 
       itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${Order_Type}</div><div class='colTwo_NoDash'>${Description}</div></div>" 

      }); 
     }, "json"); 


     alert("document loaded"); 



    }); 




    $(window).load(function() { 

     $("#comboOrderTypes").igCombo("setFocus"); 
     alert("window loaded"); 

    }); 


</script> 
+0

'$ .get'执行异步调用。 'alert()'给它时间来完成,所以你的代码的其余部分将工作。 – melancia 2014-09-10 10:24:43

回答

1

插件未初始化直到AJAX请求完成......所以做了ajax成功回调内部setFocus电话。

$(document).ready(function() { 

    var data = [{ 
     "ID": 1, 
      "Name": "John Smith", 
      "Age": 45 
    }, { 
     "ID": 2, 
      "Name": "Mary Johnson", 
      "Age": 32 
    }, { 
     "ID": 3, 
      "Name": "Bob Ferguson", 
      "Age": 27 
    }]; 

    $("#comboready").igCombo({ 
     dataSource: data, //JSON Array defined above 
     valueKey: "ID", 
     textKey: "Name", 
     itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${ID}</div><div  class='colTwo_NoDash'>${Name}</div></div>" 

    }); 


    var data = [{ 
     "ID": 1, 
      "Name": "John S", 
      "Age": 45 
    }, { 
     "ID": 2, 
      "Name": "Mary J", 
      "Age": 32 
    }, { 
     "ID": 3, 
      "Name": "Bob F", 
      "Age": 27 
    }]; 

    $("#comboload").igCombo({ 
     dataSource: data, //JSON Array defined above 
     valueKey: "ID", 
     textKey: "Name", 
     itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${ID}</div><div class='colTwo_NoDash'>${Name}</div></div>" 

    }); 


    // OrderType Combobox - On Page Load 
    $.get("../order/Json_OrderTypes", function (data) { 
     //Get 
     $("#comboOrderTypes").igCombo({ 
      dataSource: data, 
      // selectedItems: [{ index: 5 }, { text: "S" }], 
      valueKey: "Order_Type", 
      textKey: "Order_Type", 
      width: "100px", 
      dropDownWidth: 500, 
      itemTemplate: "<div class='comboItemContainer'><div class='colOne'>${Order_Type}</div><div class='colTwo_NoDash'>${Description}</div></div>" 

     }); 

     //the window load event is not really needed,use it only if you need it for some other purpose 
     $(window).load(function() { 
      $("#comboOrderTypes").igCombo("setFocus"); 
     }); 
    }, "json"); 
}); 
+0

就像一个笔记,我不会调用你的数组“数据”,因为通常这是一个你会在ajax函数的回调中使用的var。 (就像你做的那样)。在这种情况下,您会用另一个值覆盖一个现有值,您可能会遇到将错误数据分配给变量的情况。 – Codebryo 2014-09-10 10:29:06

0

用作

setTimeout(function(){$("#comboOrderTypes").igCombo("setFocus");},0); 
相关问题