Маленькое "x" в текстовом поле ввода на iphone в mobileSafari?

Я везде искал это без везения. Если вы перейдете на google.com на iphone, когда вы сосредоточитесь на поле поиска, немного "х" появится полностью справа, и если вы коснетесь его, оно очистит текущее значение поля. Кто-нибудь знает, как это сделать?

Ответы

Ответ 1

Я использовал меню разработки в Safari и изменил пользовательский агент на iPhone. Просмотр источника в Google, похоже, они установили свой html следующим образом:

<div class="gp2">
<input class="gp7" id="query" type="text" name="q" size="30" maxlength="2048" autocorrect="off" autocomplete="off" />
<a class="clear" id="clearQuery" href="#">
    <img src="data:image/gif;base64,R0lGODlhAQABAID%2FAMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D" alt="" />
</a>

и используют этот javascript:

function initClearQueryLink(query,clearQuery){
    clearQuery.setAttribute("title","Clear");
    clearQuery.addEventListener("mousedown",clearQueryBox,true);
    query.addEventListener("keyup",_handleClearQueryLink,false)
}

function _handleClearQueryLink(){
    var query=document.getElementById("query");
    var clearQuery=document.getElementById("clearQuery");
    if(clearQuery)
        if(query.value.length>0){
            clearQuery.style.display="inline";
            clearQuery.style.visibility="visible"
        } else{
            clearQuery.style.display="none";
            clearQuery.style.visibility="hidden"
        }
}

function clearQueryBox(event){
    var query=document.getElementById("query");
    var clearQuery=document.getElementById("clearQuery");
    query.value="";
    clearQuery.style.display="none";
    clearQuery.style.visibility="hidden";
    hideSuggest();
    if(event)event.preventDefault()
}

Ответ 2

Это особый тип ввода, разработанный Apple и не одобренный W3C. Если вы используете его, он отлично работает в браузерах, которые его не распознают.

<input type="search" name="q" />

Существуют и другие параметры, включая имя домена и результаты поиска, чтобы пользователь мог использовать свою историю поиска. Google, как использовать их.

Ответ 3

Хитрость заключается в том, чтобы прослушивать/привязывать событие на mousedown таким образом, что событие клика никогда не срабатывает, и ваш элемент ввода не теряет фокус. Как в примере Google выше.

Ответ 4

Хорошим ресурсом для веб-разработки iPhone является iphonewebdev.

Однако похоже, что эта особенность не является частью API Apple (по крайней мере, из моего исследования), а является чистой реализацией javascript/css.

Вы можете создать его с помощью следующего:

<script>
    window.onload = function() {
        var btn = document.getElementById("clear_input");
        btn.onclick = function() {
            var div = btn.parentNode;
            var input = div.getElementsByTagName("input")[0];
            input.value = "";
            return false;
        }
    }
</script>
<div>
    <input type="text" /><a href="#" id="clear_input">X</a>
</div>

Вы должны стилизовать X как образ, чтобы он смешивался внутри ввода. И, конечно, я настоятельно рекомендую использовать фреймворк JavaScript, если вы можете.

Ответ 6

И это моя версия jQuery, она скрывает ее в начале, и если пользователь удаляет введенное, он удаляет "x". Также, когда они удалили текст с помощью кнопки, он также скроет "x".

HTML

<input type="search" name="search" id="search" />
<a href="#" class="clear_input">X</a>

JavaScript

$('.clear_input').hide();   
    $('#search').keyup(function() {

        var search = $(this).val().replace(/^\s+|\s+$/g,"");

        if (search.length >= 1) {
            $('.clear_input').show();
        } else {
            $('.clear_input').hide();
        }

        $('.clear_input').click(function() {
            $('#search').val('');
            $('.clear_input').hide();
        }); 
    });

Версия JavaScript быстрее, чем версия jQuery, конечно.