#jquery #html #ruby-on-rails-3
#jquery #HTML #ruby-on-rails-3
Вопрос:
я использую rails 3 UJS для своих форм.
В одном из полей у меня есть значение по умолчанию как «ABC».
Если пользователь не изменил поле, я не хочу, чтобы это значение отправлялось.
1) Это необязательное поле, поэтому я не хочу препятствовать отправке формы
2) Я мог бы перехватить действие «:before», но мне это кажется халтурным
Это кажется распространенным вариантом использования — какой самый элегантный способ сделать это?
Ответ №1:
Если вы хотите поддерживать только браузеры, поддерживающие HTML5, вы можете использовать placeholder
атрибут <input>
тега вместо установки значения, которое вы не хотите отправлять.
<input type="text" placeholder="ABC" />
Имейте в виду, что IE9 не поддерживает этот атрибут (исходный код).
Если вы предпочитаете этого не делать, вы могли бы использовать submit
событие формы, чтобы очистить поле формы, если оно не было изменено.
$("#my-form").submit(function(event) {
var input = $("#my-input-box");
if (input.val() === "ABC") {
input.val("");
}
});
Вы можете обнаружить, что ваши пользователи иногда хотят ввести «ABC» в поле. Вы можете решить эту проблему, установив флаг при изменении содержимого и проверив, установлен ли флаг в приведенном выше коде, вместо сравнения текущего значения с значением по умолчанию.
Комментарии:
1. Спасибо, Самир! основная проблема заключается в том, что мне нужно постоянно проверять, синхронизированы ли мой html и мой js, что всегда приводит к ошибкам
2. Поэтому пометьте входные данные заполнителями с классом и просто найдите этот класс вместо этого. Затем воздействуйте на все элементы, а не только на один.