установка значения текстового поля с помощью jquery по-прежнему извлекает ошибки проверки из рельсов - PullRequest
2 голосов
/ 07 мая 2011

У меня есть флажок в моей форме. При нажатии он просто копирует значения из другого текстового поля и помещает то же значение в другое текстовое поле. Я использую следующий код для этого:

$('#box1').val($('#box2').val());

это прекрасно работает, так как визуально в форме я вижу данные из box2, заполненные box1 Тем не менее, моя проверка рельсов все еще начинается и говорит, что box1 не может быть пустым. Но визуально я вижу, что он не пустой из-за приведенного выше кода.

Есть что-то еще, что я должен делать?

Вот подробный код:

$('#same_above_relation').change(function () {
    if ($(this).attr("checked")) {
        $('#box1').val($('#box2').val());
        $('#box1').attr('disabled', 'disabled');
     return; 
    }
//unchecked
        $('#box1').removeAttr("disabled");
        $('#box1').val("");
});

1 Ответ

1 голос
/ 07 мая 2011

Я думаю, что ваша проблема именно здесь:

$('#box1').attr('disabled', 'disabled');

Отключенные элементы формы не отправляются на сервер с остальной частью формы:

Следовательно, он не может получать пользовательский ввод, и его значение не будет отправлено в форме.

И поэтому значение, установленное для #box1, никогда даже не попадет в модель на вашем сервере.Возможно, вам следует попробовать использовать атрибут readonly вместо disabled.

Вы также можете использовать обратный вызов before_validation в своей модели, чтобы вручную скопироватьзначение box2 для box1 перед выполнением проверок.Однако, если вы сделаете это, он всегда будет скопирован, даже если ваш флажок не установлен, поэтому вам придется добавить больше логики, чтобы проверить значение флажка внутри вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...