@Mishcake

Как оптимизировать проверку условий в форме?

Здравствуйте. Помогите, пожалуйста, оптимизировать код проверки условий на странице оформления заказа.

Есть страница оформления заказа, сделанная на конструкторе, который позволяет вставить кастомный html-css-js код.

Есть форма на PHP, которая принимает запросы, которые отправляются после первого входа на страницу заказа и возвращает информацию о пользователе из базы.

На основании этой информации делаются проверки.

Например, если вернулось hasDiagnostic === "true" и workedWith === "какая-то строка", то сделать следующие операции:
if (hasDiagnostic === "true") {
      
      if (workedWith !== undefined) {
        $(`option[value="${workedWith}"]`).attr("selected", "selected");
      }

      switch (workedWith) {
        case "Лилия":
          typeConsultation.prop("checked", true);
          typeConsultation.click();
          liliyaConsultation.prop("checked", true);
          liliyaConsultation.click();
          break;
        case "Александра":
          typeConsultation.prop("checked", true);
          typeConsultation.click();
          alexConsultation.prop("checked", true);
          alexConsultation.click();
          break;


Это лишь маленький участок кода, у меня там дальше по 15 таких "кейсов".

Это можно как-то оптимизировать или придётся мириться с огромным количеством кейсов и условий?

Или другой случай, более сложный для меня.

Нужно отслеживать изменение двух параметров, например: выбор имени специалиста и выбор типа услуги. Перед этим, естественно, скрипт запросил у базы данные о пользователе и вернул их.

И дальше начинается пляска:
- (если выбран тип услуги №1 и сотрудник) И (значение из базы === имя сотрудника), то всё ок, ничего не делаем
- (если выбран тип услуги №1 и сотрудник) И (значение из базы !== имя сотрудника), то выводим предупреждение
- (если выбран тип услуги №2 и сотрудник) И (значение из базы === имя сотрудника и другое значение из базы === true), то всё ок, ничего не делаем

И так далее. Вот тут ступор, как это всё учитывать при проверке, если пользователь может свободно переключать типы услуг (там радио-кнопка) и выбирать сотрудника из выпадающего списка?

Делать большой список условий, который будет проверяться при изменении типа услуги? Типа input[id="type"].change() - и внутри погнал проверять все условия, если сменилась радио-кнопка.

И отдельно select[option="Имя Фамилия"].change() - это для КАЖДОГО сотрудника в списке - и тоже аналогичные проверки, только на совпадение с типом услуги?

Вроде простая проверка, по сути, но у меня всё на 200 строк кода выходит. Понимаю, что творю дикую вирмишель из кода, но как оптимизировать - не понимаю :(

Подскажите, пожалуйста, какие-нибудь идеи по оптимизации таких проверок.
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ответы на вопрос 1
daemonhk
@daemonhk
ПсиХоПат
1. liliyaConsultation, alexConsultation и прочие чем отличаются? Если все одинаково, акромя выбранного сотрудника, то напишите функцию, которая на вход будет принимать выбранного сотрудника, дабы под каждого одно и тоже не писать.

2. Распишите на листочке сначала все типовые действия, потом найдите однообразность данных/выполняемых условий.

3. Не торопитесь писать сразу весь код, делайте понемногу и проверяйте, например "Выбрать сотрудника", потыкали на всех, ага, все ок, двигаемся дальше.

4. typeConsultation.prop("checked", true); и typeConsultation.click(); более чем уверен, что можно вынести за условия (за скобки, вспоминаем математику).

5. Удачи))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы