2012-04-10 2 views
2

Я использую плагин-заполнитель jQuery от Daniel Stocks.Удалить место после типа (а не после фокуса)

Это плагин: https://github.com/danielstocks/jQuery-Placeholder/blob/master/jquery.placeholder.js

Он работает на самом деле хорошо для всех полей, кроме следующей маленькой проблемы: В Chrome, когда фокус находится на поле, заполнитель остается до тех пор, пока что-то типа. Но в IE и FF текст заполнителя удаляется после фокуса. Я бы всех хотел вести себя как в Chrome.

Вещь в хроме, заполнитель поддерживается естественным образом, поэтому даже без плагина он работает так, как мне нравится. В FF он работает тоже без плагина, кроме как с ранее упомянутой проблемой. И в IE он не работает без плагина, как вы могли догадаться.

+0

Но какая проблема вы пытаетесь решить? Пользователи этих браузеров с собственной поддержкой, независимо от того, являются ли они или действуют как Webkit, используются так, как они себя ведут. Зачем менять интерфейс? –

+0

просто проблема, что при фокусировке местозаполнитель удаляется. Поэтому, когда пользователь нажимает на вкладку, чтобы перейти к следующему полю и не видит заранее, что это заполнитель, он должен идти туда и обратно. –

+1

Не только это, но объединение заполнителей с автофокусом - это не стартер с FF и IE. Когда страница загружается с автофокусированным полем, она должна ** не ** удалять местозаполнитель. Chrome делает это правильно. FF и IE срабатывают. Прекрасным примером того, где вы хотели бы использовать это, является форма входа. Или даже любую страницу «создать», где вы хотите, чтобы пользователь начал сразу вводить текст, но имеет подсказку с текстовым полем. – MikeMurko

ответ

1

Заменить следующий раздел в источнике от линии 77:

input.focus(function() { 
    placeholder.hide(); 
}); 

с этим:

input.keyup(function() { 
    if (input.val() != "") { 
     placeholder.hide(); 
    } 
}); 
+0

Это не отменяет настройки в Firefox и в IE, то заполнитель добавляется к фактическому значению ввода, поэтому он не исчезает. –

+0

А я вижу, я не понимал, что вы хотите изменить их базовую функциональность. Возможно, это технически невозможно. –

4

Я автор плагина. Если вы действительно хотите, чтобы отключить встроенную поддержку для Chrome вы можете редактировать строки 71 в коде:

var NATIVE_SUPPORT = !!("placeholder" in document.createElement("input")); 

к:

var NATIVE_SUPPORT = false 

Делая это, вы будете просто сделать ВСЕ браузеры используют плагин , даже те, у кого есть поддержка.

Я хотел бы указать, что это не только определенное поведение «Chrome». Safari (и мобильное сафари на iOS) ведет себя так. Эти пользователи, скорее всего, «привыкли» к этому поведению, поэтому, возможно, задайте вопрос, чего именно вы пытаетесь достичь?

+0

Я бы многократно бывал, чтобы решить проблему настолько эффективно и снова для вопроса в конце. –

+0

Хотя я, конечно, понимаю, что пользователь привык к тому, как работает браузер, я думаю, что в этом конкретном случае им было бы не очень досадно. То, что я хочу достичь, заключается в том, что пользователи могут видеть местозаполнитель во все времена, прежде чем вводить текст в поле, поэтому им не нужно идти туда и обратно между полями, когда они не замечают правильного заполнителя. По-моему, это очень удобно. –

0

Вы можете сделать замещающую работу в IE с

// Установка Заполнитель в IE

$('input[type="text"]').each(function(){   
    var input = $(this);     
    $(input).val(input.attr('placeholder'));     
    $(input).focus(function(){ 
     if (input.val() == input.attr('placeholder')) { 
      input.val(''); 
     } 
    });  
    $(input).blur(function(){ 
     if (input.val() == '' || input.val() == input.attr('placeholder')) { 
      input.val(input.attr('placeholder')); 
     } 
    }); 
}); 
1

У меня был потребность что-то подобное и сделал несколько модов к JQuery UI заполнителю плагина вы упомянули.

http://jsfiddle.net/sigmabetatooth/5j55m/

чувствовать себя свободно поднять против него и поделиться своими мыслями.

:

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

@ Даниэль, если вы заинтересованы в том, чтобы я подталкивал его к вам, просто дайте мне знать.

 Смежные вопросы

  • Нет связанных вопросов^_^