Сбросить значение по умолчанию для ввода в jquery

Я не помню, почему я использую this.defaultValue ? this.defaultValue : '': в приведенном ниже коде, только this.defaultValue,

$('input:text, textarea').blur(function() {
if ($.trim(this.value) == ''){
this.value = (this.defaultValue ? this.defaultValue : '');
}
});

Почему бы не это:

$('input:text, textarea').blur(function() {
if ($.trim(this.value) == ''){
this.value = this.defaultValue;
}
});

3 ответа

Потому что, если defaultValue не определено, вы получите 'undefined' вместо ''

Это безопасность. В случае this.defaultValue является undefined, он возвращает пустую строку, избегая this.value получить неопределенное.

Дело в том, что это свойство доступно только для <input>´ and`, в значительной степени ограничивающий объем такой функции. Например, довольно часто в форме есть выборки.

Более простым подходом было бы использовать хранилище значений по умолчанию в "data-" приписывать. Это особенность HTML5, но она имеет своего рода обратную совместимость, поскольку они являются только HTML-атрибутами.

<select data-defaultValue="1">
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

И вы можете получить доступ к атрибуту с:

$('select').attr('data-defaultValue');
// or
$('select').data('defaultValue');

Больше информации:

Относительно примечания: почему бы не использовать атрибут-заполнитель HTML5 - вам не нужно возиться с defaultValue. http://www.w3schools.com/html5/att_input_placeholder.asp

Насколько я знаю, он не поддерживается в IE, но хорошо работает на других

Другие вопросы по тегам