Есть ли (должна быть) какая-либо разница между нативным js defaultValue и jQuery prop(defaultValue)?

Я немного смущен нативной функциональностью defaultValue в javascript. Я понял, что значение ввода html должно быть установлено, и это значение является начальным значением по умолчанию.

Я хотел восстановить определенный элемент ввода (текст) в его значение по умолчанию, когда у меня есть это внутри click-события. (Кнопка отмены)

//Restore values
var name_person = $(this).find('.nameOfPerson');       

//Attempt 1
name_person.val(name_person.defaultValue);
alert('restored value=' + name_person.val()); //This alerts nothing

//Attempt 2
name_person.val(name_person.prop('defaultValue')); //This alerts the default value
alert('restored value=' + name_person.val());

Почему собственный атрибут defaultValue не работает, когда проп ('defaultValue') работает? Разве они не должны быть одинаковыми? Начальное значение задается значением value="bla bla bla" во входном элементе.

Я получил его на работу (с jQuery), но мне просто интересно - я что-то упустил?

2 ответа

Решение

Это не работает, потому что name_person является объектом jQuery, а jQuery не имеет defaultValue, Вам нужно сослаться на объект DOM

name_person[0].defaultValue

или же

name_person.get(0).defaultValue

Значение по умолчанию в jquery с использованием attr, а не prop

просто попытайтесь узнать кое-что.. пример HTML

<input type="text" name="usrname" value="default"><br>
<input type="submit" value="Submit">

JS

$("input[type=submit]").click(function(){
$("input[type=text]").val(1);
    alert($("input[type=text]").prop("value"));  // it will return 1 
    alert($("input[type=text]").attr("value"));  // it will return default value


    alert($("input[type=text]")[0].defaultValue);  // @epascarello posted return default value



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