JQuery сохранение не записываемое значение в переменную? - PullRequest
0 голосов
/ 18 марта 2011

Эй, ребята, мне интересно, как я мог бы решить это наилучшим образом: у меня есть форма, которая содержит текущую дату как значение.верните его на поле, когда оно размыто.Представьте себе следующий случай.1.) поле содержит текущую дату.2.) пользователь удаляет введенное значение и вводит новое значение.3.) пользователь решает удалить это значение снова и щелкает за пределами поля.затем он размыт и должен содержать исходное значение (дату).

var cv = '';
$('input').focus(function() {
    cv = $(this).val();
});

$('input').blur(function() {
    if ( $(this).val() == '' ) {
        $(this).val(cv);
    }
});

Какой лучший способ решить эту проблему?Как я мог решить это?

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Поведение размытия / фокуса, которое вы описываете, звучит как атрибут placeholder в HTML.Пример:

<input type="text" placeholder="e.g. John Doe">

Так что в вашем случае все, что вам нужно сделать, это использовать placeholder вместо value:

<input type="text" placeholder="<?php echo date("m.d.y"); ?>">

Вы также можете использовать их оба:

<input type="text" value="<?php echo date("m.d.y"); ?>" placeholder="<?php echo date("m.d.y"); ?>">

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

(Обратите внимание, что вы действительно должны использовать <input type=date> для ввода даты, но это не имеет ничего общего с вашим вопросом.)

@placeholder работает в последних стабильных версиях Chrome, Safari, Opera и Firefox 4.

Для браузеров, которые изначально не поддерживают этот атрибут, вы можете использовать JavaScript.

Если вы используете jQuery, вы можете использовать мой плагин-заполнитель для jQuery , что является самым надежным решением, которое я видел.Вот демонстрационная страница: http://mathiasbynens.be/demo/placeholder

0 голосов
/ 18 марта 2011

Я бы сохранил исходное значение на focus, но затем страница загрузилась (onready):

var cv;
$(function() {
    cv = $("input").val();
});
...