Переключатель ввода текста

0

Я пытаюсь создать текстовый ввод, где отображается значение, то есть "Имя клиента", а затем, когда он щелкнут, он исчезает, а затем, если ничего не было напечатано и пользователь не нажал "Имя клиента", снова отображается. Я достиг этого, но, если пользователь что-то вводит, а затем меняет свое мнение, удаляет текст, который они только что вводят, а затем отключается, "Имя клиента" больше не появляется. Я был бы очень благодарен за помощь, пожалуйста.

$(function() {
    $('#InvClientsName').click(function(){
        if( $('#InvClientsName').attr("value") == "Client Name" ) {
            $('#InvClientsName').attr("value", "");
         }
    });
    $('#InvClientsName').outside('click', function(e) {
        if( $('#InvClientsName').attr("value") == "" ) {
            $('#InvClientsName').attr("value", "Client Name");
        }
    });
});
  • 2
    Вы не хотели бы использовать вместо этого placeholders ? - w3schools.com/tags/att_input_placeholder.asp
  • 0
    Является ли #InvClientsName уникальным и статическим элементом или он используется несколько раз и создается динамически?
Теги:

1 ответ

1

Вам нужно рассмотреть несколько вещей:

  1. Когда пользователь нажимает на ваше поле (событие focusin), текст должен быть пустым, но это, вероятно, должно произойти только в том случае, если они не помещают какой-либо пользовательский текст в поле уже
  2. Когда пользователь выйдет из поля (событие focusout), текст должен вернуться к тексту по умолчанию, но только если текст не пуст

Итак, вы можете попробовать следующее:

HTML:

<input type="text" id="InvClientsName" value="Hello world!">

JQuery:

var defaultText = $('#InvClientsName').val(); // grabs the default text field value on page load

$('#InvClientsName').focusin(function() { // when entering the text field by click or tabbing
    if($(this).val().trim() == defaultText) // if it default text
        $(this).val(''); // blank it out
});

$('#InvClientsName').focusout(function() { // when leaving the text field
    if($(this).val().trim() == '') // if the field is blank
        $(this).val(defaultText); // set the value to default
});

Однако это поведение очень похоже на атрибут placeholder, и вы можете просто заменить весь этот процесс:

<input type="text" id="InvClientsName" value="" placeholder="Hello world!">

Здесь скрипка, чтобы вы могли видеть различия.

  • 1
    +1 за включение решения исходного вопроса, вместе с отличной альтернативой заполнителей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню