24.03.2017, 16:03
|
Аспирант
|
|
Регистрация: 14.05.2016
Сообщений: 33
|
|
Validate plugin
ГУРУ!
Помогите пожалуйста.
Никак не могу понять, как в js накидать правила, в php без проблем, а вот с js никак не получается(((
1)в index.php сделал так
$jsParams = array(
'REQ_NAME' => $arResult["REQ_NAME"],
'REQ_EMAIL' => $arResult["REQ_EMAIL"],
'REQ_MESSAGE' => $arResult["REQ_MESSAGE"],
);
<script>
var fm_fb_array = <?=\Bitrix\Main\Web\Json::encode($jsParams, $options = null);?>
</script>
2) получил : https://yadi.sk/i/kQAyTLj43GJz3u
3) теперь в файле script.js
хочу сделать проверку
$( document ).ready( function () {
$( "#fm-feedback-form" ).validate( {
rules: {
//если if(fm_fb_array['REQ_NAME'] == Y) тогда :
user_name: "required",
//если if(fm_fb_array['REQ_EMAIL'] == Y) тогда :
user_email: {
required: true,
email: true
},
//если if(fm_fb_array['REQ_MESSAGE'] == Y) тогда :
MESSAGE: {
required: true,
minlength: 3
}
}
});
});
//но при попытке сделать например так:
if(fm_fb_array['REQ_NAME'] == Y)
{
user_name: "required",
}
//не работает(((
помогите плз, в js почти ничего не понимаю(((
|
|
24.03.2017, 16:22
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Agapkin, не совсем понятно как связать, созданный тобой, объект fm_fb_array (а не массив, как ты предполагал, судя по названию переменной) и валидацию, как я предполагаю, формы с ИД= fm-feedback-form...
|
|
24.03.2017, 17:03
|
Аспирант
|
|
Регистрация: 14.05.2016
Сообщений: 33
|
|
ksa,
Подскажите пожалуйста , как правильно сделать ?
1) я так понимаю, можно проверяемым инпутам формировать класс или ид и потом проверять их на наличие? Не знаю на сколько это правильно...
Или
2) в битриксе видел как то передают массив и дальше с ним работают, только как это сделать не знаю(( может подскажете?
|
|
24.03.2017, 18:28
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Agapkin,
если $( "#fm-feedback-form" ).validate({ это подключение плагина к форме, а rules: { ... это его параметры, то зачем такая дикость на стороне сервера как REQ_NAME => "Y" и т.д., ведь можно задать этим ключам сразу значения согласно синтаксиса параметров плагина, которому просто затем передать объект fm_fb_array.
|
|
24.03.2017, 18:59
|
Аспирант
|
|
Регистрация: 14.05.2016
Сообщений: 33
|
|
Цитата:
|
зачем такая дикость на стороне сервера как REQ_NAME => "Y" и т.д.,
|
в настройках компонента, пользователем устанавливаются поля обязательные/необязательные для заполнения, вот мне и надо проверить если флажок висит Y то тогда с помощью validate проверять на правильность/заполненость если нет то не проверять
Цитата:
|
ведь можно задать этим ключам сразу значения согласно синтаксиса параметров плагина, которому просто затем передать объект fm_fb_array.
|
тут ваще ниче не понял)))
шо там куда и как передать...
Если бы что нибудь понимал в js не задавалбы глупых вопросов....
|
|
24.03.2017, 19:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Agapkin
|
в настройках компонента, пользователем устанавливаются поля обязательные/необязательные для заполнения
|
На здоровье, так почему это сразу не описать на сервере и отдать готовым объектом? Хотя довольно странно даже для сервера:
user_name: "required",
user_email: {
required: true,
email: true
},
и т.д. То есть, если пользователь устанавливает параметры полей, а не скопом кучу параметров или один в зависимости от поля, то такого в принципе быть не должно.
|
|
24.03.2017, 19:29
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Agapkin
|
как правильно сделать ?
|
Пока даже не понятно, что именно ты собираешься делать...
|
|
25.03.2017, 01:34
|
Аспирант
|
|
Регистрация: 14.05.2016
Сообщений: 33
|
|
объясню по подробнее...
в битриксе компоненты реализованы примерно так, вкратце:
1)есть файл component.php
в этом файле заложена вся логика компонента
2)есть template.php
это шаблон вывода/отображения компонента
3)есть script.js - собственно там весь js
4)и куча другого брахла, к делу отношения не имеет
Так вот, создаю я компонент обратная связь, в файле component.php заложил всю логику этого компонента.
В файле template.php та самая форма обратной связи.
Есть настройки у компонента, где можно указать какие поля являются обязательными для заполнения какие нет. КАкбэ с php проблем нет все работает, то есть если какое то поле не заполнить component.php вернет ошибку что поле не заполнено и тд и тп . То есть на стороне сервера все ОК .
ЗАдача моя заключается в следующем:
прикрутить плагин валидатор форм, "для красоты"!
сейчас если ручками установить настройки(правила) этого плагина то все работает без проблем.
А мне надо чтобы я сделал настройки component.php и в зависимости от этих настроек настраивался бы плагин валидатор форм (его правила).
соответственно настройки это компонента можно получить например php массивом или переменными а дальше проверять их в этом валидаторе форм
например если "инпут-нейм = y" тогда в плагине валидатор форм тоже будет включена проверка этого поля если нет - значит нет и тд .
собственно вопрос как это все написать поправильному в файле script.js
можно конечно это сделать без проблем в файле template.php в тегах script и там соответственно через php проверять все настройки компонента и устанавливать правила для плагина, но хочется именно это сделать в script.js а там php не напишешь((
|
|
25.03.2017, 02:31
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Agapkin,
$( function () {
var data = {rules : {}};
if(fm_fb_array['REQ_NAME'] == Y) data.rules.user_name = "required"
if(fm_fb_array['REQ_EMAIL'] == Y) data.rules.user_email = {
required: true,
email: true
}
if(fm_fb_array['REQ_MESSAGE'] == Y) data.rules.MESSAGE = {
required: true,
minlength: 3
}
$( "#fm-feedback-form" ).validate( data );
});
|
|
25.03.2017, 02:34
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Agapkin,
возможно нужны кавычки == "Y"
|
|
|
|