.val()

Get the current value of the first element in the set of matched elements. Set the value of each element in the set of matched elements.

.val()

The .val() method is primarily used to get the values of form elements such as input, select and textarea. When called on an empty collection, it returns undefined.

When the first element in the collection is a select-multiple (i.e., a select element with the multiple attribute set), .val() returns an array containing the value of each selected option. As of jQuery 3.0, if no options are selected, it returns an empty array; prior to jQuery 3.0, it returns null.

For selects, checkboxes and radio buttons, you can use :checked to select the right elements. For example:

// Get the value from the selected option in a dropdown
$("select#foo option:checked").val();

// Get the value from a dropdown select directly
$("select#foo").val();

// Get the value from a checked checkbox
$("input[type=checkbox][name=bar]:checked").val();

// Get the value from a set of radio buttons
$("input[type=radio][name=baz]:checked").val();

Note: At present, using .val() on <textarea> elements strips carriage return characters from the browser-reported value. When this value is sent to the server via XHR, however, carriage returns are preserved (or added by browsers which do not include them in the raw value). A workaround for this issue can be achieved using a valHook as follows:

$.valHooks.textarea = {
  get: function (elem) {
    return elem.value.replace(/\r?\n/g, "\r\n");
  },
};

Get the single value from a single select and an array of values from a multiple select and display their values.

JS
<p></p>

<select id="single">
  <option>Single</option>
  <option>Single2</option>
</select>

<select id="multiple" multiple="multiple">
  <option selected="selected">Multiple</option>
  <option>Multiple2</option>
  <option selected="selected">Multiple3</option>
</select>
CSS
p {
  color: red;
  margin: 4px;
}
b {
  color: blue;
}
HTML
function displayVals() {
  var singleValues = $("#single").val();
  var multipleValues = $("#multiple").val() || [];
  // When using jQuery 3:
  // var multipleValues = $( "#multiple" ).val();
  $("p").html(
    "<b>Single:</b> " +
      singleValues +
      " <b>Multiple:</b> " +
      multipleValues.join(", ")
  );
}

$("select").change(displayVals);
displayVals();
DEMO

Find the value of an input box.

JS
<input type="text" value="some text" />
<p></p>
CSS
p {
  color: blue;
  margin: 8px;
}
HTML
$("input")
  .keyup(function () {
    var value = $(this).val();
    $("p").text(value);
  })
  .keyup();
DEMO

.val(value)🡢 jQuery

value String, Number, ArrayA string of text, a number, or an array of strings corresponding to the value of each matched element to set as selected/checked.

.val(function(indexInteger, valueString))🡢 String

function(indexInteger, valueString) FunctionA function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.

This method is typically used to set the values of form fields.

val() allows you to pass an array of element values. This is useful when working on a jQuery object containing elements like <input type="checkbox">, <input type="radio">, and <option>s inside of a <select>. In this case, the inputs and the options having a value that matches one of the elements of the array will be checked or selected while those having a value that doesn't match one of the elements of the array will be unchecked or unselected, depending on the type. In the case of <input type="radio">s that are part of a radio group and <select>s, any previously selected element will be deselected.

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.

The .val() method allows setting the value by passing in a function. As of jQuery 1.4, the function is passed two arguments, the current element's index and its current value:

$("input[type=text].tags").val(function (index, value) {
  return value.trim();
});

This example removes leading and trailing whitespace from the values of text inputs with a "tags" class.

Set the value of an input box.

JS
<div>
  <button>Feed</button>
  <button>the</button>
  <button>Input</button>
</div>
<input type="text" value="click a button" />
CSS
button {
  margin: 4px;
  cursor: pointer;
}
input {
  margin: 4px;
  color: blue;
}
HTML
$("button").click(function () {
  var text = $(this).text();
  $("input").val(text);
});
DEMO

Use the function argument to modify the value of an input box.

JS
<p>Type something and then click or tab out of the input.</p>
<input type="text" value="type something" />
HTML
$("input").on("blur", function () {
  $(this).val(function (i, val) {
    return val.toUpperCase();
  });
});
DEMO

Set a single select, a multiple select, checkboxes and a radio button .

JS
<select id="single">
  <option>Single</option>
  <option>Single2</option>
</select>

<select id="multiple" multiple="multiple">
  <option selected="selected">Multiple</option>
  <option>Multiple2</option>
  <option selected="selected">Multiple3</option>
</select>

<br />
<input type="checkbox" name="checkboxname" value="check1" /> check1
<input type="checkbox" name="checkboxname" value="check2" /> check2
<input type="radio" name="r" value="radio1" /> radio1
<input type="radio" name="r" value="radio2" /> radio2
CSS
body {
  color: blue;
}
HTML
$("#single").val("Single2");
$("#multiple").val(["Multiple2", "Multiple3"]);
$("input").val(["check1", "check2", "radio1"]);
DEMO

Looking for a Web Developer?

👋

Hi! I'm Basti, author of this site. If you are looking for a web developer with 15+ years of experience, holla at me!

Be it the good 'ol jQuery, vanilla JS or modern frameworks like Vue and Svelte, front- or backend, I can help you.

Just write me at jobs@jqapi.com :)