2014-07-10 26 views
8

jQuery otomatik tamamlama özelliğini kullanarak arama yapmak için bir metin kutusuna sahibim. Metin kutusuna bir şey yazdığımda, hiçbirinin seçilmediği önerileri gösteriyor.jQuery otomatik tamamlama önemli sorunu girin

selectFirst öğesinin şunu öğrendim: true artık desteklenmiyor. Açılır listeden bir öğe seçip enter tuşuna basarsam, iyi çalışıyor.

sorun kullanıcı elma app girer ve enter tuşuna basarsa, o app ile form göndermeyi denediğinde olmasıdır. Form yalnızca aşağıya açılan listeden bir değerle gönderilmelidir.

Girdikten sonra form gönderimini devre dışı bırakmayı denedim, böylece formumu JavaScript'ten gönderebildim ancak bir çözüm bulamadım.

$("#searchtext").autocomplete({ 
    source: path + 'autocompletesearch?category=' + $("select[name='category'] option:selected").val(), 
    width: '500px', 
    matchContains: true, 
    select: function(event, ui){ 
     $(".searchform").attr("action", path + "fullproductinfo/" + ui.item.id); 
     $("input[name='searchid']").val(ui.item.value); 
     $(".searchform").submit(); 
    } 
}); 

Ve benim form:

İşte benim kodudur

<input type='button' değil 'to', yani form için çalışmamalıdır basarak girmek varsayılan olduğu
 <form method="post" action="search" class="searchform"> 
      <div class="searchdiv"> 
       <input type="text" id="searchtext" name="searchtext" 
        placeholder="Search a product or a brand" autocomplete="off"/> 
      </div> 
      <div class="searchbutton"> 
       <input type="button" name="btnsearchproduct" value="Search" /> 
      </div> 
      <div class="clear"></div> 
     </form> 

Not. Gönderilen formu gönderdiğimi sanıyorum otomatik tamamlamadır.

+0

Eğer 'selectFirst' seçeneğinin çalışmasını beklediğiniz gibi, varsayılan olarak ilk seçeneğe sahip olabilirsiniz? – j809

+0

Evet, bu en iyisi olurdu, ancak selectFirst çalışmıyor – Ashutosh

cevap

11

Bu kullanıyorsanız: belgelerinde

$(".selector").autocomplete({ autoFocus: true }); 

bahsetti::

http://jqueryui.com/autocomplete/ Sonra autoFocus ilk öğeyi istiyor, artık bu seçeneği kullanabilirsiniz http://api.jqueryui.com/autocomplete/

DÜZENLEME

Önemli bir sorun girdiyseniz, Böyle deneyebilirsiniz:

$(".selector").keydown(function(event){ 
    if(event.keyCode == 13) { 
     if($(".selector").val().length==0) { 
      event.preventDefault(); 
      return false; 
     } 
    } 
}); 
0

ben benzer bir sorunu & bu ben

if ($(".selector").val().length > 0) { 
var options = $(".selector").autocomplete("option"); 
var fromAutocomplete = false; 

jQuery.each(options.source, function(index, device) { 
if ($(".selector").val() == options.source[index]) { 
    fromAutocomplete = true; 
} 
}); 

if (!fromAutocomplete) { 
$(".selector").val(""); 
    $(".selector").attr("disabled", false); 
    return false; 
} 
} 
1

Eğer oto için komple jquery ui kullanıyorsanız, size gerekli olan tüm otomatik odaklama belirterek olduğunu çözüldü nasıl edilir vardı: true seçeneği.

İlk sonucu otomatik olarak seçer ve enter tuşuna basıldığında ilk sonucu kullanır.

$(".selector").autocomplete({ 
    autoFocus: true, 
    source: function (request, response) { 
    //your code 
    }, 
    select: function(event, ui) { 
    //your code 
    } 
}); 
İlgili konular