[Solved] jQuery .val change doesn’t change input value

I have an HTML input with a link in the value.

<input type = 'text' value = '' id = 'link' />

I am using jQuery to change the value on a certain event.

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

The above code changes the value of the text box but doesn’t change the value in the code (value=”” stays unchanged). I need the value=”” to change as well.

Enquirer: Lukas


Solution #1:

Use attr instead.
$('#link').attr('value', 'new value');


Solution #2:

Changing the value property does not change the defaultValue. In the code (retrieved with .html() or innerHTML) the value attribute will contain the defaultValue, not the value property.

Respondent: Kevin B

Solution #3:

to expand a bit on Ricardo’s answer:

about val()

Setting values using this method (or using the native value property) does not cause the dispatch of the change event. For this reason, the relevant event handlers will not be executed. If you want to execute them, you should call .trigger( “change” ) after setting the value.

Respondent: Landan Jackson

Solution #4:

This is just a possible scenario which happened to me. Well if it helps someone then great: I wrote a complicated app which somewhere along the code I used a function to clear all textboxes values before showing them. Sometime later I tried to set a textbox value using jquery val(‘value’) but I did’nt notice that right after that I invoked the ClearAllInputs method.. so, this could also happen.

Respondent: amira

Solution #5:

$('#link').prop('value', 'new value');

Attr will work on jQuery 1.6 but as of jQuery 1.6.1 things have changed. In the majority of cases, prop() does what attr() used to do. Replacing calls to attr() with prop() in your code will generally work. Attr will give you the value of element as it was defined in the html on page load and prop gives the updated values of elements which are modified via jQuery.

Respondent: Raul

Solution #6:

My similar issue was caused by having special characters (e.g. periods) in the selector.

The fix was to escape the special characters:

Respondent: WiredIn

Solution #7:

<script src="//"></script>
function changes() {
$('#link').val('new value');
<button onclick="changes()">a</button>
<input type='text' value='' id='link'>
Respondent: ikerya

Solution #8:

For me the problem was that changing the value for this field didn`t work:


None of the solutions above worked for me so I investigated further and found:

According to DOM Level 2 Event Specification:
The change event occurs when a control loses the input focus and its value has been modified since gaining focus.
That means that change event is designed to fire on change by user interaction. Programmatic changes do not cause this event to be fired.

The solution was to add the trigger function and cause it to trigger change event like this:

Respondent: Ivan Jancic

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy