2014-07-22 1 views
1

신청서에 텍스트 메시지를 보낼 수있는 옵션이 있습니다. 그래서 휴대 전화 번호를 입력 할 수있는 텍스트 상자가 있습니다. 사용자가 숫자를 입력하면 필터링 된 연락처를 동적으로 채워야합니다. 휴대 전화 연락처 검색 기준과 비슷해야합니다. 즉, 사용자 입력 998의 경우 주어진 입력 998을 기준으로 필터링 된 연락처 목록을 표시해야합니다.안드로이드 phonegap에서 연락처 필터를 구현하는 방법?

이렇게하려면 navigator.contacts.find()을 사용했으며이 방법을 사용하여 특정 연락처를 가져올 수있었습니다. 그러나 동적 검색 기준은 아닙니다. 내가 필터링 된 숫자를 표시 할 필요가 입력하는 동안 사용자가 어떤 번호를 입력하면

이 내 텍스트 상자,

<input name="" id="numberTxt" placeholder="Enter A Mobile Number" value="" type="tel" data-mini="true"> 

이다. 이것이 가능한가? 그렇다면 어떻게 할 수 있습니까? 추가 플러그인이 필요합니까? 모든 제안,

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

function onSuccess(contacts) { 
     for (var i = 0; i < contacts.length; i++) { 
      console.log("Display Name = " + contacts[i].displayName); 
     } 
} 

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

답변

2

는 내가 수 있도록

window.plugins.ContactPicker.chooseContact(function(contactInfo) { 
     var contactNumber = contactInfo.mobileNumber; 
     document.getElementById("numberTxt").value= contactNumber ; 
    }); 

내가 mobileNumber 매개 변수 contactInfo에 객체를 추가 한 다음 링크, https://github.com/hazemhagrass/ContactPicker.git에서 연락처 선택 도구 플러그인을 설치하고 약간의 정도 등을 코드의 코드를 수정 한 연락 책에서 연락처 번호를 얻고 HTML에서 사용합니다. 코드 수정

ContactPicker.js, ContactPickerPlugin.java에서

cordova.exec(function(contactInfo) { 
     newContantInfo = { 
      displayName: contactInfo.displayName, 
      email: contactInfo.email, 
      mobileNumber:contactInfo.mobileNumber, //included the mobile Number parameter 
      phones: [] 
     }; 
     for (var i in contactInfo.phones) { 
      if (contactInfo.phones[i].length) 
      newContantInfo.phones = newContantInfo.phones.concat(contactInfo.phones[i]); 
     }; 
     success(newContantInfo); 
    }, failure, "ContactPicker", "chooseContact", []); 

,

contact.put("email", email); 
    contact.put("displayName", name); 
    contact.put("mobileNumber", mobileNumber); // included the mobile Number in contact object 
    contact.put("phones", phones); 
1

실제로 전화 번호로 필터링 할 수 있습니다. 필터링 할 필드 배열에 "phoneNumbers"필드 이름이 나열되어 있는지 확인해야합니다. 아래는 Android에서 전화 번호로 걸러 내기 위해 테스트 한 예입니다.

document.getElementById('searchContactsButton').onclick = function(e){ 
      var options = new ContactFindOptions(); 
      options.filter = document.getElementById('searchInput').value; 
      options.multiple = true; 
      var fieldsToFilter = ["phoneNumbers"]; 
      navigator.contacts.find(fieldsToFilter, 
      function(contacts) { 
       alert('found ' + contacts.length + ' contacts'); 
      }, function(contactError) { 
       alert('error: ' + contactError); 
      }, options); 
     } 
+0

내가 접촉이 존재 여부를 확인 할 필요가 없습니다. 휴대 전화 번호를 입력하는 동안 키를 누를 때 일치하는 패턴을 표시해야합니다. 998을 입력하면 998 번호가있는 연락처가 자동으로 표시됩니다. 어떻게해야합니까? 어떤 생각이든 ? – Vinod

+0

입력 요소에 이벤트 처리기를 추가하고 '변경'또는 '입력'이벤트를 수신 대기 할 수 있습니다. 이에 따라 장치의 연락처를 필터링하는 기능이 실행됩니다. –