Próbuję przeprowadzić symulację HTML5 input type='search'
przy użyciu javascript. Moim celem jest, aby coś takiego:Umieszczanie obrazu na klikalnym polu tekstowym w przypadku ipad (Tworzenie typu wejścia wyszukiwania dla systemu iOS)
Przede wszystkim będę określić, dlaczego nie używać HTML5 Szukaj typ wejścia bezpośrednio. W przypadku iPada wymieniony typ wejścia pokazuje zaokrąglony narożnik pola tekstowego, a wszystkie inne funkcje wymagane w przypadku natywnego pola wprowadzania wyszukiwania wyglądają podobnie do iOS, z wyjątkiem małej ikony krzyżyka (x) w rogu pola tekstowego, gdy użytkownik wpisze trochę tekstu w polu wyszukiwania.
Próbowałem wszystkiego - Umieszczenie input type przeszukiwanie do <form>
, zmiany położenia type='search'
, itd. Żaden zdaje się przynieść pożądanego efektu (tylko wtedy, gdy aplikacja jest wdrożony na iPad - WebView lub w przeglądarce telefonu).
Przeprowadziłem symulację widżetu za pomocą ikony krzyża i wybiórczo pokazując/ukrywając go na podstawie zawartości pola wyszukiwania. Działa dobrze we wszystkich wersjach desktop Safari
(przełączanie narzędzi programistycznych). Jednak gdy próbuję na iPadzie, wpisanie w polu wyszukiwania powoduje wyświetlenie ikony krzyżyka zgodnie z potrzebami, ale nie pozwala na zarejestrowanie zdarzenia dotyku. Wiem też, dlaczego tak się dzieje, ponieważ klawiatura ekranowa jest aktywna, gdy użytkownik pisze, w polu tekstowym wyszukiwania zapobiega się następnemu zdarzeniu dotykowemu. Z tego powodu zapobiega się również dotykaniu ikony krzyżyka.
Mój kod wygląda następująco:
HTML wygląda następująco:
<form id="searchForm">
<div>
<input type="search" id="searchBox">
<a id="cross_icon" >
<img src="search.png">
</a>
</div>
</form>
Kod jquery wygląda następująco:
//This function will be triggered on keyup event on searchBox
showXIcon : function(){
var search = $('#searchBox').val();
if(search.replace(/\s/g, "") === "") {
$('#cross_icon').hide();
} else {
$('#cross_icon').show();
}
},
//this function will be called on click on cross_icon
clearSearchBox: function(){
$('#searchBox').val('');
$('#cross_icon').hide();
},
Czy istnieje sposób, aby umożliwić dotykowy zdarzenia na ikona krzyżowa bez wyraźnego zacinania klawiatury ekranowej? W inny sposób lub obejście?
sam problem !!! – tiger
Czy próbowałeś zatrzymać propagację zdarzeń? showXIcon: function (e) {e.stopPropagation(); ... wypróbował to ... – TecHunter
. Problem polega na tym, że ikona znajduje się w polu tekstowym i gdy tylko dotkniemy ikony, zostanie ona zarejestrowana jako dotyk w polu tekstowym i pojawi się klawiatura ekranowa. stop propogation nic nie zrobił :( – Vidhi