РуководстваОснова Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилитиЛендингиУниверсальный APIИнтеграцииКаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моментыСистемное администрированиеHOWTOТаблицыФормы
Как вывести форму во всплывающем окне рядом с кнопкой (popover)Загрузка формы по ссылкеКак принимать в форму не 1 параметр (itemID), а несколько входящих параметров? data-param-p1Как сделать модальную форму Как добавить коллбек после загрузки формы и после сохранения формы.Как показывать на форме прогресс заполнения (прогресс заполнения формы)Как сделать форму в виде мастера шаговКак сделать подтверждение действия в СМС (SMS) в формеКак установить поля в форме по умолчанию при загрузкеКак показывать изменяющуюся информацию при изменении полейФормы. Как сделать в форме более 1 кнопки действий (несколько кнопок действий на форме)Как правильно обрабатывать цены (дробные числа) на формеКак передать в форму скрытый параметрКак в форме добавить примеры заполнения полей (example)Как выбрать значение списка через справочник в модальном окнеКак сделать окно подтверждения действия формыДинамическое изменение itemID у формы в зависимости от других элементов страницыКак скрывать/показывать, обновлять область на странице при изменении поля формыКак добавить новый элемент, если в списке на форме его нетКак перезагрузить страницу после сохранения формыКак вывести списковые данные или таблицу внутри формыКак сделать зависимые поля в форме (Страна, Город)Как сделать кастомную HTML разметку для формы (jsRender)Как создать кастом форму с подтверждением действия по Email или SMSУстановка фоновой панели для формыКак сделать задержку при сохранении формы (saveDelay)Подсказки-ограничители длины для полей в формеКак динамически изменять тип поля формыКак сохранить значение поля в браузере, чтобы каждый раз его не вбивать при загрузке (оставлять последнее сохраненное). Запоминание поля формы в браузереКак выводить разные данные на одной форме для разных ролейКак сделать форму с сохранением состоянияКак сделать поля с анимацией значенийИспользование Google Recaptcha в формахКак обновить таблицу после сохранения формы в модальном окнеКак указать произвольную маску для поля ввода в формеКастом проверка полей формы через JSКак в выборе даты (datepicker) задать доступные датыКак создать форму для редактирования сущностиЗагрузка формы в выпадающем окне (dropdown)Добавление смайликов (emoji) в поля формКак у формы сделать progress bar при загрузке формыРабота с датами в формахПоказ количества символов рядом с полем в формеКнопка очистки формы ResetКонтроль заполнения ключевых форм на сайтеКак сделать форму с простым подтверждением действия (confirm)Как поменять соотношение длины метки и поляКак при сохранении формы вывести сообщение printlog, а не alert
Поля формыЗагрузка файлов, картинокHOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как создать кастом форму с подтверждением действия по Email или SMS
C помощью кода JS и запросов RequestJS мы можем создать функционал кастомной формы, в которой действие будет подтверждаться по Email или SMS.
Код JS на странице:
$(function(){
$(document).delegate('.ae-sendCode', 'click', function(e){
e.preventDefault();
var contact = $('.ae-contact').val();
if(!contact) {
$('.ae-contact').focus();
return;
}
// запрашиваем код для юзера
as.sys.request("auth", "sendCode", {
data: { contact:contact },
onSuccess: function (data) {
if (data.result && data.data && data.data.length) {
console.log(data.data);
var s = '';
as.sys.showDialog("Введите код", s, "OK", function () {
var code = $('.ae-code').val();
if(!code) {
$('.ae-code').focus();
return;
}
// проверяем код и выполняем целевое действие
as.sys.request("auth", "verifyCode", {
data: { contact:contact, code: code },
onSuccess: function (data) {
if (data.result && data.data && data.data.length) {
location.href='/';
}else{
as.sys.bootstrapAlert(data.msg || "Неверный код, либо пользователь заблокирован", {type: "warning"});
}
}
});
});
}else {
as.sys.bootstrapAlert(data.msg || "Что-то пошло не так. Проверьте указанный контакт.", {type: "warning"})
}
}
});
});
});
Код первой процедуры SQL (отправка кода пользователю на email через внешнее действие):
CREATE OR ALTER PROCEDURE [dbo].[request_auth_sendCode]
@parameters DictionaryParameter READONLY, -- or ExtendedDictionaryParameter
@username nvarchar(32)
AS
BEGIN
declare @code nvarchar(32) = upper(left(convert(nvarchar(36), newid()), 5)) -- 'xxx12'
declare @contact nvarchar(128)
select @contact = Value from @parameters where [Key]='contact'
declare @userID int, @email nvarchar(128)
select @userID = id, @email = email from as_users where lower(email)=lower(@contact)
if(@userID is null) begin
select 'Не найден указанный email' Msg, 0 Result
return
end
update as_users set sessionCode=@code, sessionCodeCreated = getdate()
where id = @userID
-- SELECT 1 Msg, Result
select '' Msg, 1 Result
-- SELECT 2 Основные данные в виде произвольной таблицы
select 1 tst
-- SELECT 3 Внешние действия
declare @body nvarchar(max) = 'Код для ввода на сайте - ' + @code
select 'email' type, @email [to], 'Подтверждение действия' subject, @body body
END
Вторая процедура SQL (проверка кода и выполнение целевого действия):
CREATE OR ALTER PROCEDURE [dbo].[request_auth_verifyCode]
@parameters DictionaryParameter READONLY, -- or ExtendedDictionaryParameter
@username nvarchar(32)
AS
BEGIN
declare @contact nvarchar(128)
select @contact = Value from @parameters where [Key]='contact'
declare @code nvarchar(128)
select @code = Value from @parameters where [Key]='code'
declare @userID int,@date datetime , @user nvarchar(128)
select @userID = id, @date = sessionCodeCreated, @user = username from as_users where lower(email)=lower(@contact) and lower(sessionCode)=lower(@code)
if(@userID is null) begin
select 'Неверный код' Msg, 0 Result
return
end
if(datediff(minute, getdate(), @date) > 20) begin
select 'Истекло время ожидания. Попробуйте заново отправить код' Msg, 0 Result
return
end
-- SELECT 1 Msg, Result
select '' Msg, 1 Result
-- SELECT 2 Основные данные в виде произвольной таблицы
select 1 tst
-- SELECT 3 Внешние действия
--- если все ОК - то выполняем целевое действие ....
END
Примечание:
- в таблице as_users 2 дополнительные поля sessionCode и SessionCodeCreated - для хранения текущего запрошенного кода и времени создания кода (чтобы он действовал в течение короткого промежутка времени)
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта