2013-02-14 63 views
0

当我必须打开此页面时,我想要显示手机中的所有联系人,无需点击任何按钮。 这里myFunction()显示所有联系人。Phonegap中的显示联系人

I have to call `myFunction()`, in this code. I dont know where to call this function. Help me 

      var ar1 = new Array; 
      var ar2 = new Array; 
      var name, number; 
      var counter = 1; 

      document.addEventListener("deviceready", onDeviceReady, false); 

      function onDeviceReady() { 
       var options = new ContactFindOptions(); 
       options.filter = ""; 
       options.multiple = true; 
       filter = [ "displayName", "phoneNumbers" ]; 
       navigator.contacts.find(filter, onSuccess, onError, options);    
      } 

      function onSuccess(contacts) { 
       for (var i = 0; i < contacts.length; i++) { 
        for (var j = 0; j < contacts[i].phoneNumbers.length; j++) { 
         name = contacts[i].displayName; 
         number = contacts[i].phoneNumbers[j].value; 
         ar1.push(name); 
         ar2.push(number); 

// here i called myFunction(), but it's displaying one contact in multiple times      
         } 
        // here i called myFunction(), but it's displaying one contact in multiple times 
        } 
// Here i called myFunction(), the function is not calling 
      } 

      function onError(contactError) { 
       alert('onError!'); 
      } 

    // where to call this function 
      function myFunction() { 

       $("#checkall").click(function() { 
        if ($(this).is(':checked')) { 
         $(":checkbox").attr("checked", true); 
        } else { 

         $(":checkbox").attr("checked", false); 
        } 
       }); 

       for (var i = 0; i < ar2.length; i++) { 

        var newTextBoxDiv = $(document.createElement('div')).attr("id", 
          'TextBoxDiv' + counter); 
        newTextBoxDiv.after().html(
          '<input type="checkbox" value="' 
            + ar1[i] + '"/>' 
            + ar1[i] + " " + " " + ar2[i] + '</br>'); 
        newTextBoxDiv.appendTo("#TextBoxesGroup"); 

       } 
      } 
      </script> 
     </head> 
     <body> 

      </br> 

     <div id="TextBoxesGroup"> 
       <div id="TextBoxDiv1"> 
        <input type="checkbox" id="checkall" value="check" />selectAll</br> <br /> 
        <br /> <br /> 
       </div> 
      </div> 

      </body> 

     </html> 
+0

你的问题没有说明究竟是什么ü想要做的事。 – 2013-02-14 06:15:51

回答

0

我不明白你想要什么。

如果您想在应用程序启动时生成电话号码复选框列表, 只需在onSuccess()回调结束时调用myFunction()。

如果你想要另一次,你应该在下面定义一个你想要的事件处理程序。

$("#PhonenumberListButton").click(function() { myFunction(); }); 

并且您的代码可能在循环期间发生索引异常。

让我们在下面考虑。

  1. 每个联系人都有1名,但有1个或多个电话号码
  2. 代码推每一个名字为AR1,也推动接触的每个电话号码为AR2
  3. 所以ar2.length可以比AR1更大.length
  4. 您的生成显示代码使用ar2.length for循环。如果任何联系人有2个或更多的电话号码,它应该会例外。 这是停止onSuccess()中的循环的原因。

固定码

 function onSuccess(contacts) { 
      for (var i = 0; i < contacts.length; i++) { 
       name = contacts[i].displayName; 
       ar1.push(name); 

       ar2[i] = []; // array for multiple phone#. 
       for (var j = 0; j < contacts[i].phoneNumbers.length; j++) { 
        number = contacts[i].phoneNumbers[j].value; 
        ar2[i].push(number); 
       } 
      } 

      myFunction(); // display phone numbers 
     } 

     function myFunction() { 

      $("#checkall").click(function() { 
       if ($(this).is(':checked')) { 
        $(":checkbox").attr("checked", true); 
       } else { 

        $(":checkbox").attr("checked", false); 
       } 
      }); 

      for (var i = 0; i < ar2.length; i++) { 
       if (ar2[i].length) { // avoid none phone# exception 
        var newTextBoxDiv = $(document.createElement('div')).attr("id", 
          'TextBoxDiv' + counter); 
        newTextBoxDiv.after().html(
          '<input type="checkbox" value="' 
            + ar1[i] + '"/>' 
            + ar1[i] + " " + " " + ar2[i][0] + '</br>'); 
        newTextBoxDiv.appendTo("#TextBoxesGroup"); 
       } 
      } 
     } 
+0

我称myFunction(),onSuccess()结束,它不起作用。我必须显示所有的联系人,只需点击任何按钮 – User 2013-02-14 06:37:35

+0

10我更新了有关您的代码的答案。请让我知道你的结果:) – cwdoh 2013-02-14 06:40:40

+0

在哪里所有myFunction() – User 2013-02-14 06:47:01

相关问题