User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

Otestování Bootstrap Typeahed v Joomle, příklady.

Následují příklad pomáhá rychle zadat název jednoho ze států USA bez použití JavaScriptu.

<input type="text" data-provide="typeahead" data-items="4"
data-source='["Alabama","Alaska", ... ,"Wyoming"]' />

Přidáním data attributů se u vybraného elementu vytvoří funkčnost našeptávače.
Parametry se předávají pomocí data attributů nebo JavaScriptu. U data attributů se jeho název přidá k data-, např. data-source="".

Stejný našeptávač s využitím JavaScriptu.

<input type="text" class="priklad1" />

<script type="text/javascript">
   $(".priklad1").typeahead({
      source: ["Alabama","Alaska", ... ,"Wyoming"] 
   });
</script>

Našeptávač se jménem a fotkou kapely. Jako zdroj dat je použito externí pole objektů získané pomocí Ajax.
Zkuste napsat písmeno "a".

<div class="row-fluid">
<input type="text" class="priklad2 span6 pull-right" >
</div>

<script type="text/javascript">
   $(document).ready(function() {   
       $(".priklad2").typeahead({
           source: function(query, process) {
              objects = [];
              map = {};
              $.ajax({
                  url: 'json.php',
                  dataType: 'json',
                  data: {q: query},
                  success: function(data) {
                      $.each(data, function(i, object) {
                         map[object.name] = object;
                         objects.push(object.name);
                     });
                     process(objects);
                  }
              });
           },
           highlighter: function (item) {
               var t = map[item];
               var itm = ''
                       + "<div class='typeahead_wrapper'>"
                       + "<img class='typeahead_photo' src='" + t.photo + "' />"
                       + "<div class='typeahead_labels'>"
                       + "<div class='typeahead_primary'>" + t.name + "</div>"
                       + "<div class='typeahead_secondary'>" + t.id + "</div>"
                       + "</div>"
                       + "</div>";
               return itm;   
           },        
           updater: function(item) {
               alert(map[item].id);
               return item;
           }
       });
   });
</script>

json.php vrací:

[{ "id":1, "name":"ABBA", "photo":"abba.jpg" },
{ "id":2, "name":"Adele", "photo":"adele.jpg" },
{ "id":3, "name":"AG Flek", "photo":"agflek.jpg" },
{ "id":4, "name":"Alkehol", "photo":"alkehol.jpg" },
{ "id":5, "name":"Arakain", "photo":"arakain.jpg" },
{ "id":6, "name":"Argema", "photo":"argema.jpg" }]

styly css:

.typeahead_wrapper { display: block; height: 50px;}
.typeahead_photo { float: left; max-width: 50px; max-height: 50px; margin-right: 20px; }
.typeahead_labels { float: left; height: 30px; width: 210px; white-space: normal;}
.typeahead_primary { font-weight: bold; }
.typeahead_secondary { font-size: .8em; margin-top: 1px; font-weight: normal; }
.typeahead .active > a, .typeahead .active > a:hover { color: #ddd; }