2015-04-21 47 views
11

Bazı giriş alanlarına sahip bir sayfam var. Bu sayfadaki veriler form teslimini kullanmadan sunucuya gönderilir. Verileri toplayan, JSON oluşturan ve Ajax çağrısı kullanarak sunucuya gönderen bir JavaScript'im var.HTML giriş otomatik tamamlama

Bu durumda sorun, kullanıcının aynı formu doldurduğu bir sonraki seferde otomatik tamamlama sunmak için tarayıcının verileri kaydetmemesidir.

Bundan kaçınmanın bir yolu var mı? Otomatik tamamlama teklif etmenin bir yoluna ihtiyacım var! Herhangi bir hile?

+0

umarım bu yardımcı olur umarım http://stackoverflow.com/questions/15462991/trigger-autocomplete-without-submitting-a-form –

+1

Bu soruya biraz detay vermeniz gerekebilir. Her kullanıcının bir dahaki sefere aynı veriyi tekrar görmesini ister misiniz, yoksa TÜM kullanıcıların otomatik tamamlamada SAME verilerini görmesini istersiniz. Bunun cevabına bağlı olarak, ya anhnv veya MuppetGrinder'ın cevapları en iyisi olabilir. – JLo

+0

Tarayıcı otomatik tamamlama mekanizmasına başvuruyorum. Bir kullanıcı forma döndüğünde, tarayıcı, bir giriş alanına çift tıklattığınızda veya yazmaya başladığınızda, o alana girdiğiniz tüm değerleri gösterir (bence Firefox gibi bazı tarayıcılarda form geçmişi olarak adlandırılır) –

cevap

1

Gerçek bir form eklendiğinde ve tamamlama olayı gerçekten tetiklendiğinde (AJAX tarafından veri gönderilmiş olsa bile) otomatik tamamlama işlemi buldum. Bir gönderme düğmesiyle bir form kullanmayı ve Javascript'i (formun onsubmit olayına ekleyerek) engellemeyi ve AJAX tarafından gerçekleştirilmesini öneriyorum.

Sadece bir giriş alanı kullanmak yerine, uygun bir HTML formunu kullanmak ve göndermek engellemek, kullanıcı girdiğinde onsubmit işleyicinizin etkinleştirilmesi avantajına da sahiptir. Bir kullanıcı olarak oldukça kullanışlı buluyorum.

+1

'Otomatik Tamamlama'nın varsayılan değeri' açık '. Yani, bunun bir fark yaratacağını düşünmüyorum. –

+0

Haklısınız. _autocomplete_, devre dışı bırakmak istediğinizde "kapalı" bir özellik olarak daha kullanışlıdır. Cevabımı güncellediniz. – Sidd

2

Trigger autocomplete without submitting a form numaralı belgede belirtilen yöntemi denediniz mi? Bu benim için çalıştı.

Temel olarak bir formun gönder düğmesine tıklatıp gizli bir iframe'de boş bir sayfa açmak için formu alın. Açıkça bir hack var ama tam anlamıyla, form gönderme düğmesini tıkladığında formu gönderir ve ben de kontrol ettim her tarayıcıda çalışır böylece doğal yeni bir sayfa açar

burada Örnek işaretlemeyi alıntı:.

<iframe id="remember" name="remember" class="hidden" src="/content/blank">  
</iframe> 

<form target="remember" method="post" action="/content/blank"> 

    <fieldset> 
    <label for="username">Username</label> 
    <input type="text" name="username" id="username" value=""> 
    <label for="password">Password</label> 
    <input type="password" name="password" id="password" value=""> 
    </fieldset> 

    <button id="submit-button" type="submit" class="hidden"></button> 

</form> 

Daha sonra formu ajax ile işlerken $("#submit-button").click() ile gönderin.

4

Bu tür şeyler için html5 tarayıcı deposunu kullanıyorum. Oldukça iyi bir giriş var here Bu, çoğu modern tarayıcı için istemci tarafında veri kalıcılığına izin veriyor. Form verilerini yakalamak ve istediğiniz sıklıkta yeniden oluşturmak için bunu kullanabilirsiniz.

2

Bu deneyebilirsiniz: Otomatik Tamamlama jQuery

function DefaultCtrl($scope) { 
 
    $scope.names = ["john", "bill", "charlie", "robert", "alban", "oscar", "marie", "celine", "brad", "drew", "rebecca", "michel", "francis", "jean", "paul", "pierre", "nicolas", "alfred", "gerard", "louis", "albert", "edouard", "benoit", "guillaume", "nicolas", "joseph"]; 
 
} 
 

 
angular.module('MyModule', []).directive('autoComplete', function($timeout) { 
 
    return function(scope, iElement, iAttrs) { 
 
      iElement.autocomplete({ 
 
       source: scope[iAttrs.uiItems], 
 
       select: function() { 
 
        $timeout(function() { 
 
         iElement.trigger('input'); 
 
        }, 0); 
 
       } 
 
      }); 
 
    }; 
 
});
<div ng-app='MyModule'> 
 
    <div ng-controller='DefaultCtrl'> 
 
     <input auto-complete ui-items="names" ng-model="selected"> 
 
     selected = {{selected}} 
 
    </div> 
 
</div>

ile http://jsfiddle.net/sebmade/swfjT/

Umut bu yardımı size!

+3

Bir şey kaçırmadıkça OP'nin sorgusunda Açısaldan söz edilmiyordu, bu cevap OP'nin kullanmadığı bir araca bağımlı görünüyor. – Roy