2010-08-12 3 views
1

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

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

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

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

Мысли? Какой подход я должен принять?

+0

+ укладка только для чтения, вероятно, хорошо работать здесь. – mpen

ответ

1

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

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

(1) Да. Адресная форма уже существует ..они могут пропустить пресеты и просто начать заполнять их; не имеет смысла заставить их смотреть на пресеты, чтобы решить, хотят ли они использовать его, а затем заставить его появляться ... плюс 1-строчный адрес не так ясен, как разделение частей, как форма делает; с отключенными элементами легче читать. (2) Нет. Адрес сохраняется в отдельной таблице; Я хочу, чтобы поля были отключены, поэтому я знаю, могу ли я повторно использовать тот же FK или создать новый адресный объект. Если они хотят использовать предустановку *, а затем редактировать ее, они могут нажать --- – mpen

+0

- пресет, затем вернитесь к опции «- Выбрать -», чтобы повторно включить входы, но сохранить значения, а затем отредактировать это в их сердцах. – mpen

0

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

  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'); 
    } 

} 
Смежные вопросы