jQuery к php переводчику?

У меня есть ряд правил проверки формы, что я записал с плагином блока проверки допустимости jQuery. Так как я должен повторить ту же проверку на стороне сервера, я думал, что будет хорошо не должным быть переписать мои правила в PHP. Если правила были просты field=>rulename=>value Я мог просто сохранить их как JSON и декодировать их в массивы PHP. К сожалению, некоторые правила зависят от других полей или вычислили значения.

Есть ли универсальный способ перевести field=>rulename=>value=function{} от javascript/jquery до PHP? Или, есть ли способ запустить jQuery на стороне сервера также и затем передать результаты PHP?

Образец некоторых правил:

        rules: {
            title: {required:true, minlength:5},
            description: {required:true, minlength:5},
            event_type_id: "required",
            ev_start: { dateCan: true, required: true},
            ev_end:{ dateCan: true,
                     minDate: "input[name='ev_start']"
            },
            ev_starttime:{
                required: 
                    function(element){
                        return $("input[name='allday']:unchecked")
                    },
                time: true,
                maxTime: {
                    depends: function(element) {
                                return $("input[name='ev_endtime']:filled")
                                       && $("input[name='ev_start']").valid()   
                                       && $("input[name='ev_end']").valid()
                                       && $("input[name='ev_start']").val()==$("input[name='ev_end']").val()
                            },
                    param: "input[name='ev_endtime']"
                }
            },
       //etc...
       }

6
задан dnagirl 11 February 2010 в 13:30
поделиться

4 ответа

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

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

После этого вам нужно будет решить, как общаться с JavaScript. Если вы загружаете JS в страницу, я бы просто использовал PHP для циклического просмотра массива PHP и построения правил JS по мере необходимости. Если вы используете вызовы внешних функций, то JSON кодирует массив и передает его в функцию транслятора, которая анализирует массив JSON и переформатирует его в то, что ожидает JQuery.

EDIT TO CLARIFY:

Вы можете пойти в другом направлении и перейти с JS на PHP, но то, что я предлагаю, даст вам возможность легко менять другие библиотеки JS или JQuery и просто менять транслятор. При переходе с JS на PHP вам придется менять ОБЕ стороны, если вы решите сменить валидаторы JS. Если вы планируете заниматься кодированием нескольких сайтов или нескольких разработчиков, гораздо лучше будет просто изучить общую конфигурацию массивов PHP и просто писать трансляторы для JS.

3
ответ дан 17 December 2019 в 04:46
поделиться

Я бы порекомендовал сделать обратное: преобразовать некоторые функции проверки на основе PHP в функции Javascript. Автоматически преобразованные функции не будут такими гибкими и, следовательно, такими же универсальными и сильными, как функции, написанные вручную, и вы действительно хотите, чтобы лучшее было на стороне сервера. Наихудший сценарий, если вы запихиваете некоторую проверку PHP-> JS, заключается в том, что пользователь получает туда-обратно на сервер, прежде чем ему сообщат, что его адрес электронной почты неверен.

1
ответ дан 17 December 2019 в 04:46
поделиться

Думаю, я нашел проблему.

Вы звоните по адресу $ ('# top _ mailing') .hовerIntent (... дважды. Один раз в нижней части файла hoverintent_r5.js и один раз в файле custom.js. Видимо, IE это не нравится. Избавьтесь от того или другого, и все должно быть хорошо.

Возможно, лучше сохранить весь код в собственном файле js. Иначе легко забыть об этом.

EDIT: Исключение проблемы stop ().

Я предпочитаю анимацию:

$('#top_mailing').hoverIntent(
  function () {
    $("#top_mailing_hidden").stop().animate({height:150},'slow');
  }, 
  function () {
    $("#top_mailing_hidden").stop().animate({height:0},'slow');
  }
);

Таким образом, когда вам нужно остановиться и изменить направления, он всегда будет знать, куда идти. (0 и 150 в приведенном выше примере.)

Обратите внимание, что для этого потребуется, чтобы top_mailing_hidden имели клип: auto; переполнение: скрытый набор .

Поскольку вы используете hовerIntent, может не потребоваться, чтобы вызовы остановились (), так как hoverIntent предназначен для того, чтобы избежать этих непреднамеренных событий мышления.

Немного от темы:

Имейте в виду одну вещь с вашей реализацией. Так как это форма для заполнения, пользователи, скорее всего (даже не задумываясь) переместят мышь с пути, когда они начнут печатать. Это приведет к исчезновению формы.

Имея это в виду, вы, возможно, захотите пересмотреть выполнение mouseout события. При отправке формы всегда можно сделать ее всплывающей при помощи необязательной кнопки «Отмена» или «Закрыть».

-121--5086071-

Я думаю, что вы можете просто придерживаться пути в конце git diff .

git diff HEAD^ HEAD special_folder/
-121--2959406-

Поскольку правила проверки достаточно просты, можно записать собственные и сохранить их как функцию. Просто примите значение в параметре, а затем верните значение true или false.

В вашем php-коде, который получает форму отправки, вам нужно будет просто передать значение полей в свою функцию проверки и проверить, является ли это результатом true или false.

Проверка на бэкэнд-стороне важна, поскольку проверка на основе javascript может быть легко отключена.

0
ответ дан 17 December 2019 в 04:46
поделиться

Я думаю, что то, что вы пытаетесь сделать (преобразование кода javascript в php), не очень систематично, и я сомневаюсь, что вы найдете готовое решение.

Что насчет этого подхода:

  1. Создайте некоторую конфигурацию для того, какие поля должны быть в форме, включая проверку.
  2. Создайте функцию PHP, которая генерирует форму html + javascript, включая проверку на основе конфигурации.
  3. Создайте функцию PHP, которая проверяет ввод формы на основе конфигурации.
1
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

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