Сбросить значение по умолчанию для ввода в 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, но хорошо работает на других