jQuery.изменение val не изменяет входное значение


у меня есть HTML-вход со ссылкой в значении.

<input type = 'text' value = 'http://www.link.com' id = 'link' />

Я использую jQuery, чтобы изменить значение на определенное событие.

$('#link').val('new value');

приведенный выше код изменяет значение текстового поля, но не изменяет значение в коде (value = 'http://www.link.com' остается неизменным). Мне нужно значение =", чтобы изменить, а также.

6 62

6 ответов:

использовать .
$('#link').attr('value', 'new value');

демо

изменение свойства value не изменяет defaultValue. В коде (извлекается с помощью .html() или innerHTML) атрибут value будет содержать defaultValue, а не свойство value.

чтобы немного расширить ответ Рикардо:https://stackoverflow.com/a/11873775/7672426

http://api.jquery.com/val/#val2

о val()

установка значений с помощью этого метода (или с помощью собственного свойства value) не вызывает отправки события изменения. По этой причине соответствующие обработчики событий не будут выполнены. Если вы хотите выполнить их, вы должны позвонить .триггер ("изменить") после установки значение.

Это только возможный сценарий, который произошел со мной. Ну, если это кому-то помогает, то отлично: я написал сложное приложение, которое где-то вдоль кода я использовал функцию, чтобы очистить все значения текстовых полей, прежде чем показывать их. Некоторое время спустя я попытался установить значение текстового поля с помощью jquery val('value'), но я не заметил, что сразу после этого я вызвал метод ClearAllInputs.. так что, это тоже может произойти.

моя аналогичная проблема была вызвана наличием специальных символов (например, точек) в селекторе.

исправление состояло в том, чтобы избежать специальных символов:

$("#dots\.er\.bad").val("mmmk");
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
function changes() {
$('#link').val('new value');
}
</script>
<button onclick="changes()">a</button>
<input type='text' value='http://www.link.com' id='link'>