Условно обязательные поля и отключенные входы - PullRequest
1 голос
/ 12 августа 2010

В моей форме есть несколько полей адреса (улица, город, страна, провинция, почтовый индекс), которые необходимо заполнять снова и снова. Чтобы упростить для пользователя, я добавил селектор «копия из», где они могут выбрать адрес, который они ранее использовали. Когда они это делают, поля формы заполняются автоматически, а затем отключаются. Таким образом, они могут ясно видеть, что они собираются представить.

Проблема в том, что если поля отключены, W3 сообщает , входные данные не будут отправлены. Это было бы хорошо, потому что я могу получить все необходимые данные от селектора, за исключением того, что теперь форма не проходит проверку.

Я полагаю, у меня есть два варианта:

  1. Повторное включение полей формы непосредственно перед отправкой формы (но это немного хак)
  2. Сделайте все поля адреса необязательными. Но затем мне нужно добавить кучу clean_ методов, чтобы убедиться, что они на самом деле заполнены , когда вы не используете селектор пресетов. Кроме того, я использую форму адреса по всему сайту, и в некоторых местах они действительно необходимы, поэтому я предпочел бы не делать поля необязательными. Хотя, я думаю, я мог бы просто скопировать и вставить адресную форму и создать специальный случай для этой страницы.

Мысли? Какой подход мне выбрать?

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Пара мыслей. Они могут дать вам некоторые идеи.

  1. Если пользователи используют адрес, который они ранее использовали и , они не могут редактировать форму (поля отключены), им вообще нужна форма адреса? Разве вы не можете отобразить предыдущий адрес без формы и передать ссылку на него как скрытый параметр?
  2. Если пользователи могут редактировать ранее выбранный адрес (я думаю, что Amazon это делает), то не имеет ли смысла оставлять поля формы редактируемыми?
0 голосов
/ 01 июля 2013

Я столкнулся с аналогичной проблемой, когда поля являются обязательными, но их значения извлекаются из другой формы как таковой. Я решил сделать следующее:

  1. Назначить класс всем входам, которые требуются, но не требуют ручного ввода
  2. Создать функцию, которая автоматически отключает все пользовательские вводы с клавиатуры или контекстного меню

Вот мое решение: HTML-файл с формой

<head>
<script src='file1.js'></script>
</head>

<body>
<form method='post'>
<input class='RequiredNoManual'>
<input type='submit'>
</form>

</body>
</html>

JS FILE

window.addEventListener('load', configureNoManualInputFields);
function configureNoManualInputFields()
{
    var elements = document.getElementsByClassName('RequiredNoManual');
    for(var i =0; i<elements.length; i++)
    {
        elements[i].oncut = function(){event.preventDefault();};
        elements[i].oncopy = function(){event.preventDefault();};
        elements[i].onkeydown = function(){event.preventDefault();};
        elements[i].onkeypress = function(){event.preventDefault();};
        elements[i].setAttribute('required', 'required');
    }

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