Библиотека Cash является облегчённым аналогом jQuery, предоставляющим
удобный синтаксис для работы с DOM-элементами, событиями и атрибутами.
Особое внимание уделяется элементам форм, где часто требуется получение
и установка значений через свойства value и
checked.
valueСвойство value используется для работы с текстовыми
полями, текстовыми областями и элементами
<select>.
Получение значения:
let inputValue = $('input#username').val();
console.log(inputValue);
В этом примере метод .val() возвращает текущее значение
поля с id username. Если элементов несколько, возвращается
значение первого из них.
Установка значения:
$('input#username').val('Иванов');
Здесь .val() используется в качестве сеттера. Все
выбранные элементы получают новое значение. Для
<select> это изменяет выбранную опцию, для
<textarea> — текстовое содержимое.
checked для флажков и переключателейСвойство checked применяется к
<input type="checkbox"> и
<input type="radio">, позволяя проверять состояние
выбора и изменять его.
Проверка состояния:
let isChecked = $('input#subscribe').prop('checked');
console.log(isChecked); // true или false
Метод .prop() используется для работы с булевыми
свойствами элемента. В отличие от .attr(),
.prop() корректно отражает текущее состояние элемента в
DOM.
Установка состояния:
$('input#subscribe').prop('checked', true);
Все выбранные элементы становятся отмеченными. Чтобы снять отметку,
передаётся false.
.val() и
.prop().val() предназначен для текстовых и числовых значений
элементов формы..prop('checked') предназначен для булевых свойств,
отражающих текущее состояние элементов.Для флажков и радио рекомендуется использовать именно
.prop(), потому что использование
.attr('checked') изменяет лишь атрибут в HTML, но не
актуальное состояние в DOM.
При работе с несколькими чекбоксами или радио часто требуется получить массив выбранных значений:
let selectedValues = $('input[name="colors"]:checked').map(function() {
return $(this).val();
}).get();
console.log(selectedValues);
Метод .map() создаёт массив из выбранных элементов, а
.get() преобразует объект Cash в обычный массив
JavaScript.
Для установки состояния нескольких флажков:
let colorsToCheck = ['red', 'blue'];
$('input[name="colors"]').each(function() {
$(this).prop('checked', colorsToCheck.includes($(this).val()));
});
Метод .each() позволяет перебрать все элементы и
динамически задать checked в зависимости от значений.
<select> и множественным выборомДля <select multiple> свойство value
можно использовать как массив:
$('select#fruits').val(['apple', 'banana']);
При чтении выбранных опций возвращается массив значений:
let selectedFruits = $('select#fruits').val();
console.log(selectedFruits); // ['apple', 'banana']
Cash корректно поддерживает как одиночный, так и множественный выбор без необходимости ручного перебора опций.
Если элементы формы добавляются динамически после загрузки страницы,
методы .val() и .prop() работают корректно при
прямом выборе элементов через селектор. Для событий изменения состояния
рекомендуется использовать делегирование через .on():
$(document).on('change', 'input[type="checkbox"]', function() {
console.log($(this).prop('checked'));
});
Это гарантирует, что обработчик будет срабатывать для новых элементов, добавленных в DOM после инициализации скрипта.
val() и prop() в обработчиках формПри отправке форм часто требуется собрать данные из текстовых полей и чекбоксов одновременно:
let formData = {
username: $('input#username').val(),
subscribe: $('input#subscribe').prop('checked'),
colors: $('input[name="colors"]:checked').map(function() {
return $(this).val();
}).get()
};
console.log(formData);
Такой подход обеспечивает единообразное извлечение данных и позволяет легко подготавливать объекты для отправки через AJAX.
.val() — получение и установка текстовых значений..prop('checked') — работа с состоянием флажков и
радио..map().get() — сбор значений нескольких выбранных
элементов..each() — установка состояния для группы
элементов..on('change', selector, handler) — работа с динамическими
элементами.Методы Cash позволяют минимизировать количество кода при работе с
формами, обеспечивая лаконичную и предсказуемую работу с
value и checked в любых сценариях.