Pytanie Autouzupełnianie wejścia HTML


Mam stronę z niektórymi polami wejściowymi. Dane z tej strony są wysyłane na serwer bez użycia formularza przesłania. Mam JavaScript, który zbiera dane, tworzy JSON i wysyła go na serwer za pomocą połączenia Ajax.

Problem w tym przypadku polega na tym, że przeglądarka nie zapisuje danych w celu zaoferowania autouzupełniania następnym razem, gdy użytkownik wypełni ten sam formularz.

Czy można tego uniknąć? Potrzebuję sposobu na autouzupełnianie! Jakaś sztuczka?


11
2018-04-21 08:28


pochodzenie


mam nadzieję, że ci to pomoże stackoverflow.com/questions/15462991/... - Midhun Murali
Być może będziesz musiał szczegółowo omówić to pytanie. Czy chcesz, aby każdy użytkownik zobaczył ICH same dane ponownie następnym razem, czy chcesz, aby WSZYSCY użytkownicy zobaczyli dane SAME w autouzupełnianiu. W zależności od odpowiedzi na to pytanie, odpowiedzi anhnv lub MuppetGrinder mogą być najlepsze. - JLo
Mam na myśli mechanizm autouzupełniania przeglądarki. Kiedy użytkownik wraca do formularza, przeglądarka, po dwukrotnym kliknięciu lub rozpoczęciu pisania w polu wprowadzania, pokazuje wszystkie wartości wprowadzone w tym polu (myślę, że w niektórych przeglądarkach nazywana jest historią formularzy, np. Firefox) - Zelter Ady
Oznacza to, że chcesz, aby użytkownicy widzieli tylko te rzeczy, które wprowadzili wcześniej, i nie chcesz, aby widzieli rzeczy, które inni użytkownicy mogli wprowadzić? - JLo
Dokładnie. Tylko wartości, które zostały wpisane raz na tym polu formularza. Jest funkcją autouzupełniania przeglądarki. Ale działa to tylko wtedy, gdy formularz został złożony. - Zelter Ady


Odpowiedzi:


Używam pamięci przeglądarki html5 do tego typu rzeczy. Jest to całkiem niezłe wprowadzenie tutaj Umożliwia to utrzymywanie danych po stronie klienta w większości nowoczesnych przeglądarek. Możesz użyć tego do przechwytywania danych formularza i renderowania go tak często, jak chcesz.


4
2018-04-21 09:39





Możesz spróbować: Autouzupełnianie z 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>

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

Mam nadzieję, że to ci pomoże!


2
2018-04-21 09:45



O ile czegoś mi nie brakuje, w pytaniu PO nie było wzmianki o kątowym, ta odpowiedź wydaje się zależeć od narzędzia, o którym OP nie wspomniał. - Roy


Czy próbowałeś metody przedstawionej w Autouzupełnianie wyzwalacza bez przesyłania formularza. To działało dla mnie.

Zasadniczo wywołaj kliknięcie przycisku przesyłania formularza i uzyskaj formularz, aby otworzyć pustą stronę w ukrytym elemencie iframe. To oczywiście włamanie, ale dosłownie klika przycisk przesyłania formularza, przesyła formularz i otwiera nową stronę, więc oczywiście działa we wszystkich przeglądanych przeze mnie przeglądarkach.

Aby zacytować przykładowy znacznik tutaj:

<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>

Następnie uruchom zgłoszenie przy pomocy $("#submit-button").click() podczas przetwarzania formularza przez ajax.


2
2018-04-21 08:35





Autouzupełnianie zostało znalezione, gdy istnieje rzeczywisty formularz, a jego zdarzenie zostało uruchomione (nawet jeśli dane zostały wysłane przez AJAX). Proponuję użyć formularza z przyciskiem "prześlij" i przechwyć zgłoszenie przez JavaScript (dołączając do formularza) onsubmit zdarzenie), aby temu zapobiec i zrobić to przez AJAX.

Użycie odpowiedniego formularza HTML i zapobieganie przesyłaniu, zamiast używania tylko pola wejściowego, ma również tę zaletę, że aktywuje twoje onsubmit obsługi, gdy użytkownik naciśnie klawisz Enter. Uważam, że jest to bardzo przydatne jako użytkownik.


1
2018-04-21 08:32



Domyślna wartość autocomplete jest on. Więc nie sądzę, że to coś zmieni. - Vigneswaran Marimuthu
Masz rację. autouzupełnienie jest bardziej przydatny jako atrybut "wyłączony", gdy chcesz go wyłączyć. Zaktualizowałem moją odpowiedź. - Sidd