Подражая "заполнитель" attr с "значением" - PullRequest
0 голосов
/ 18 сентября 2011

Я нашел это онлайн:

var x = 0; // count for array length

$("input.placeholder").each(function(){
    x++; //incrementing array length
});

var _values = new Array(x); //create array to hold default values

x = 0; // reset counter to loop through array

$("input.placeholder").each(function(){ // for each input element
    x++;
    var the_default = $(this).val();
    var default_value = $(this).val(); // get default value.
    _values[x] = default_value; // create new array item with default value
});

var current_value; // create global current_value variable

$('input.placeholder').focus(function(){
    current_value = $(this).val(); // set current value
    var is_default = _values.indexOf(current_value); // is current value is also default value

    if(is_default > -1){ //i.e false
        $(this).val(''); // clear value
    }
});

$('input.placeholder').focusout(function(){
    if( $(this).val() == ''){ //if it is empty...
        $(this).val(current_value); //re populate with global current value
    }
});

Как видите, он захватывает текст в атрибуте value и устанавливает его как default_value.Затем он проверяет current_value против значения по умолчанию.

Я сталкиваюсь с проблемой.

В этом примере у нас есть такой элемент:

<input type="text" class="placeholder" value="potato">

Если пользователь фокусирует и расфокусирует ввод, он отлично работает - удаляет и снова заполняет "potato".

Однако, скажем, пользователь вводит "ioqiweoiqwe",и затем фокусирует ввод (заполняет остальную часть формы "). Затем они возвращаются к нашему вводу и удаляют весь их текст, и щелкают по другому полю. Вход будет переполнен" ioqiweoiqwe "- когда действительно, мы хотим, чтобы он был заново заполнен default_value. Как мне это сделать?

С уважением, jQuery nub.

Примечание: я настроил здесь jsfiddle... немного после некоторых комментариев: http://jsfiddle.net/xmhCz/

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Я действительно не знаю, в чем проблема с этим кодом, но похоже, что он был написан кем-то, кто не знал много JavaScript.Я переписал функциональность:

$("input.placeholder").each(function() {
    var me=$(this);
    var defaultValue=me.val();
    me.focus(function() {
        if(me.val()===defaultValue) {
            me.val("");
        }
    });
    me.blur(function() {
        if(me.val()==="") {
            me.val(defaultValue);
        }
    });
});

Проверьте это на JSFiddle .

0 голосов
/ 18 сентября 2011

Входы HTML имеют defaultValue

...