2016-03-22 22 views
1

gibi tüm sayıları içerdiği yerlerde çalışmıyor Form seçimi için arama seçenekleri oluşturmak üzere https://silviomoreto.github.io/bootstrap-select/ kullanıyorum. Arama seçenekleri, herhangi bir dizge için çalışıyor, sayıları "4730" gibi numaralara sahip dizeleri kabul ediyor.Bootstrap-select bileşeninde arama, veri belirtecinin "4730"

Seçili etiket içindeki verileri bir JSON'dan veriyorum. Post-kodları alınıyor olmasıdır yerden

<div class="col-sm-10"> 
    <select class="form-control selectpicker show-tick" title="Select post-code..." id="post-code" data-live-search-placeholder="Search desired post-codes here" data-live-search="true"> 
    </select> 
</div> 

Benim JSON - -

{ 
    "Country": [ 
    { 
     "id": "01", 
     "name": "China", 
     "capital": "Beijing", 
     "divisions": ["01", "02", "03"], 
     "districts": ["01", "02", "03"] 
    }, 
    ........ 
    ], 
    "Divisions": [ 
    { 
     "id": "01", 
     "name": "Shengdong", 
     "districts": ["01","20"] 
    }, 
    ........ 
    ], 
    "Subdistricts": [ 
    { 
     "id": "01", 
     "name": "Dailang", 
     "postcodes": ["736200","404000","100000"] 
    }, 
    ........ 
    ] 
} 

Her arama kutusu dizeleri olarak seçenekler dikkate alır ve veri jeton dayalı onları aramak İşte benim seçme etikettir.

Canlı test için - http://ni8mr.github.io/gpsl-ui/. numaralı bağlantı noktasını numaralı yeni depo düğmesine tıklayarak kontrol edebilirsiniz. Posta kodları seçim seçenekleri almak için seçim hiyerarşisini izlemelisiniz. İlk ülkede, bölümler, ilçeler ...... post-kodlar.

Kullanmakta olduğum eklentiyle ilgili bir sorun olabilir. Sorum şu: Bu engeli dışarıdan nasıl aşabilirim? Ar önce benim düşüncem, "4730" un küçültülmüş ve dolayısıyla arama yapılıp yapılamayacağını kontrol etmekti. Ama başarısız oldu. Posta kodları seçimi için benim JS kodum şunun gibi: -

$("#post-code").empty().append('<option data-tokens="' + related_postcodes +'" value="' + some_number + '">' + related_postcodes + '</option>').change(function(){ 
      ....some codes ..... 

     }).selectpicker('refresh'); 

cevap

1

Önyükleme seçiminde bir hataya benziyor. Sayısal bir değer olan bir veri belirteci atarsanız, seçim yazım denetimi yapmaz ve bir dizeye dönüştürmez. Veri belirtecine başka bir dize değeri eklerseniz, tüm özellik otomatik olarak bir dizeye dökülür. Eğer posta kodunuz için numaralar yapmak istiyorsanız, veri-tokens özelliğindeki kodunuza bir boşluk bırakabilirsiniz, bu da sizin için otomatik olarak yayınlayacaktır (mantığınızdan herhangi birini bozmadığı sürece). . sondaki boşluk

Örnek: o bu küçük düzeltme eklemek için

$("#post-code").empty().append('<option data-tokens="' + related_postcodes +' " value="' + some_number + '">' + related_postcodes + '</option>').change(function(){ 
      ....some codes ..... 

     }).selectpicker('refresh'); 
+0

Geç cevap için özür dilerim. Veri-belirteç özelliğinde boşluk bırakarak ne demek istiyorsunuz? Sayı yerine veri belirteçleri için rasgele dizeler oluşturmalı mıyım? Bunu yapabilirim ama bu çok iş gerektirecek. – ni8mr

+0

Veri-tokenlerini bu şekilde oluşturursanız: data-tokens = "'+ related_postcodes +'" sizin için çalışmalıdır. Tek ve çift bitişli tırnak arasında boşluk bıraktığımı fark ettim. –

+0

Yani veri tokenleri boş olmalı mı? – ni8mr

0

Bu bootstrap bulunan böcek yüzden seçmektir sizin bootrap-select.js

Bununla kodu

// var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); 

bu çizgiyi değiştirin satır

var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase(); 

Bu, sayısal değerini String'a dönüştürecektir.

İlgili konular