Opened 7 months ago

Closed 8 days ago

Last modified 8 days ago

#1436 closed дефект (fixed)

"Первичный прием": не вводятся строчные буквы наименования изделия

Reported by: alx Owned by: Denis_N
Priority: minor Component: БД изделий АДС
Keywords: Cc:

Description (last modified by alx)

В r428/base при попытке вводить строчные буквы в поле "Название изделия" формы на странице "Первичный прием" (/accept.php) вместо строчных букв в строке появляются заглавные. Это меня довольно сильно смутило. Ожидал, что в строке ввода будут появляться те буквы, которые я ввожу.

Чтобы не смущать пользователей предлагаю отображать в строке ввода те символы, которые вводит пользователь.

Change History (3)

comment:1 by alx, 7 months ago

Description: modified (diff)

Добавил формальное предложение.

comment:2 by Denis_N, 8 days ago

Resolution: fixed
Status: newclosed

In 609/base:

Исправлен баг: "Первичный прием": не вводятся строчные буквы наименования изделия.

Раньше было так: пользователь вводил ve-02, и JS сразу переписывал содержимое поля в VE-02 через .toUpperCase(). Поэтому backend получал уже измененное значение, проверял его строгим запросом where name = ?, а в products сохранялся $_POSTname. То есть корректность держалась на том, что frontend заранее насильно приводил ввод к верхнему регистру.

Сейчас поле Название изделия больше не переписывается. Если пользователь ввел ve-02, он визуально так и видит ve-02. Но при заполнении Тип и при сохранении система ищет соответствие в list_of_products: сначала точное совпадение, затем единственное совпадение без учета регистра. Если такое совпадение найдено, backend берет каноническое имя из справочника, например VE-02, и именно его сохраняет в products.name.

Если в list_of_products есть два разных справочных имени Ve-02 и vE-02, а пользователь вручную вводит ve-02, то сохранения не будет.
Почему: точного совпадения с ve-02 нет, а поиск без учета регистра найдет сразу два варианта: Ve-02 и vE-02. Это неоднозначность, поэтому backend вернет текущую ошибку “Некорректно введено название изделия”, и произвольное имя в products не попадет.

close #1436

in reply to:  2 comment:3 by alx, 8 days ago

Replying to Denis_N:

То есть корректность держалась на том, что frontend заранее насильно приводил ввод к верхнему регистру.

??? Эту мысль я не понял... Почему ты решил, что символы верхнего регистра корректны, в нижнего - некорректны?

Note: See TracTickets for help on using tickets.