2016-09-23 10 views
4

私は現在select2ドロップダウン・プラグインを使用しています。私は状況が来た私は自動的に私たちのアプリで既存のメールのIDを入力するselect2フィールドを追加する必要があります。私はそうすることができましたが、同じ分野で私たちのアプリにない新しいメールIDを追加しなければなりません。私はそれを解決することはできません。あなたのうちの誰もがこのから私を助けてください...select2ドロップダウン・プラグインと自動入力と一緒に新しいレコードを追加

私のビューのページコードです。

<input type="hidden" class="select2 to_email w-100" name="to_email[]" 
data-role="to_email" data-width="100%" data-placeholder="To" value=""> 

JSコード:私は知っている

$('body').on('click','[data-button="reply-mail"],[data-click="reply"]', function() { 
    attach = []; 
    var $ti = $(this).closest('[data-role="row-list"]').find('[data-role="reply-mail-wrap"]'); 
    var $to_this = $ti.find('[data-role="to_email"]'); 
    var mail_toadr = $ti.find('input[name="to_addr"]').val(); 
    $($to_this).select2({ 
     placeholder: "Search for a contact", 
     minimumInputLength: 3, 
     //maximumSelectionLength: 1, 
     multiple : true, 
     ajax: { 
      url: Utils.siteUrl()+'mailbox/get_all_contacts', 
      type: 'POST', 
      dataType: 'json', 
      quietMillis: 250, 
      data: function (term, page) { 
       return { 
        term: term, //search term 
        page_limit: 100 // page size 
       }; 
      }, 
      results: function (data, page) { 
       return { results: data}; 
      } 

     }, 
     initSelection: function(element, callback) { 
      return $.getJSON(Utils.siteUrl()+'mailbox/get_all_contacts?email=' + (mail_toadr), null, function(data) { 
        return callback(data); 

      }); 
     } 
    }); 
}); 

は、例の作業があなたに、より良いかもしれないが、私は申し訳ありませんが、私はどのように行うのか分かりません。小さな助けを スクリーンショット:http://awesomescreenshot.com/08264xy485

親切に私は私の要件の修正を持っている...

答えて

1

を助けます。フィールドに存在しない値を入力すると、結果:function (data, page) {...}は空の配列を返します。私たちは、これを確認することができます。

results: function (data, page) { 
    for (var obj in data) { 
     id = JSON.stringify(data[obj].id); 
     text = JSON.stringify(data[obj].text); 
     if (id == '"0"') { 
      $ti.find('.to_email').select2('val', '<li class="select2-search-choice"><div>'+ text +'</div><a tabindex="-1" class="select2-search-choice-close" onclick="return false;" href="#"></a></li>'); 
     } 
    } 
    return { results: data}; 
} 

しかし、これよりも良いが、私はあなたが私たちが結果(:Utils.siteUrl()+'mailbox/get_all_contacts'ここ)をフェッチエリアのチェックを行うことを示唆しています。私は私の問題を解決するためにこれを行っている:

function get_all_contacts() 
{ 
    // $contacts is the result array from DB. 
    // $term is the text to search, eg: 111 

    foreach($contacts as $contact_row) { 
     $contact_all[] = array('id' => $contact_row['id'], 'text' => $contact_row['primary_email']); 
    } 
    if (empty($contact_all)) { 
     $contact_all = array('0' => array('id' => 'undefinedMAILID_'. $term, 'text' => $term)); 
    } 
    $contact_data['results'] = $contact_all; 
    send_json_response($contact_all); 
} 

をJSの値の取得:

sel_ids = $('.to_email').select2('val'); 
console.log(sel_ids); 

// console will show - ["value if mail id is existing", "undefinedMAILID_111"] 

をこれが誰かを助けることを願っています。

関連する問題