Пример. Форма ввода свойств некоторой сущности. Конкретнее: редактирование данных пользователя.
С чем столкнулся на практике:
<form action="#">
<input id="UserId" type="hidden" />
<div>
<label>Имя:<input id="UserName" type="text" /></label>
</div>
<div>
<label>Описание:<input id="UserDescription" type="text" /></label>
</div>
</form>
Запрос с помощью jQuery выглядит следующим образом:
function GetUser() {
return {
id: $("#UserId").val(),
name: $("#UserName").val(),
description: $("#UserDescription").val()
};
}
И казалось бы, все отлично. Если бы не:
- а если у нас несколько элементов управления для ввода данных о пользователях - конфликт идентификаторов (идентификатор должен быть уникален в пределах страницы)?
- а если наша сущность называется OurEntityWithVeryVeryReallyVeryLongName и имеет множество полей, представляете себе кошмар в виде id="OurEntityWithVeryVeryReallyVeryLongNameFieldWithLongName1" и тому подобное?
Что предлагаю:
<form class="User" action="#">
<input class="Id" type="hidden" />
<div>
<label>Имя:<input class="Name" type="text" /></label>
</div>
<div>
<label>Описание:<input class="Description" type="text" /></label>
</div>
</form>
Теперь и запрос с помощью jQuery выглядит иначе:
function GetUser() {
var user = $(".User");
return {
id: $(".Id", user).val(),
name: $(".Name", user).val(),
description: $(".Description", user).val()
};
}
Как по мне, вполне приемлемо, и даже похоже на объектную нотацию ("User.Name").
Возможно где-то в Сети уже есть подобное или лучшее решение, как делают Про я не искал (зря? тогда жду комментариев), сразу решил поделиться пришедшей мыслью. На этом все. Удачной разработки!