Запретить отправку поля со значением по умолчанию

#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. Поэтому пометьте входные данные заполнителями с классом и просто найдите этот класс вместо этого. Затем воздействуйте на все элементы, а не только на один.