Страницы

Поиск по вопросам

Показаны сообщения с ярлыком form. Показать все сообщения
Показаны сообщения с ярлыком form. Показать все сообщения

суббота, 15 февраля 2020 г.

new Date() не обновляет значения

#javascript #jquery #form #localstorage


Почему new Date возвращает одни и те же значения(одно и тоже время)?
Нужно чтоб при добавление сообщения ему возвращалась соответствующие время(при котором
он был добавлен).
В коде ниже выводятся сообщения с одним и тем же значением времени, пока страницу
не перезагрузишь.

В чем дело? я что то не так сделал или так и должно быть?





var time = new Date();
var timeS = time.toISOString();

$("#add-text").click( function() {

  var message = $("#text").val();

  $("#chat").append("

" + message + "

"); $("#form")[0].reset(); var chat = $("#chat").html(); localStorage.setItem("chat", chat); return false; }); if(localStorage.getItem("chat")) { $("#chat").html(localStorage.getItem("chat")); }


Ответы

Ответ 1



Объявляйте время при клике $('#add-text').click(function(){ var time = new Date(); var timeS = time.toISOString(); /*Далее ваш код*/ })

Ответ 2



у тебя уже получается сначала дата создается и присваивается в момент инициализации переменной var time = new Date(); var timeS = time.toISOString(); и его ты уже используешь Если я правильно понял то тебе надо инициализировать переменную в момент вызова этой переменой. Как показал @DarkSir при клике

вторник, 24 декабря 2019 г.

Как настроить всплывающее окно с fancybox после нажатия button с

#php #javascript #form #fancybox #всплывающее_окно


Есть форма:



Подскажите плз, как после отправки формы открыть окно с блоком
на 5-10 секунд и пропадало, планирую сделать на fancybox Планирую использовать: $('#send').submit(function(e) { $.fancybox({ href: '#thx', modal: true }); return false; }); Но открытие так и не происходит....


Ответы

Ответ 1



Document
UPDATE $('.send').click(function() { var timeout = 5000; $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic' }); SetTimeout("parent.$.fancybox.close({ href: '#thx' });", timeout); setTimeout(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(response) { console.log(response) }, }); }, timeout); });

Ответ 2



Решил сам: в конце php функции добавил код sleep(5); а скрипт такой: $('.send').click(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(data) { $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic', afterLoad: function() { setTimeout(function() { parent.$.fancybox.close({ closeEffect: 'elastic' }); }, 3000); } }); } }); }); может кому пригодится....

понедельник, 23 декабря 2019 г.

Не работает валидация форм с помощью Bootstrap

#html #css #bootstrap #form #валидация


Доброго времени суток, форумчане! 

Подскажите пожалуйста, почему не работает валидация формы. Делаю всё, как тут:
jQuery Validate Demo
и тут
Validate a Form using jQuery and Bootstrap Validator

Может что-то не так с файлом скрипта? Или подключаю его как-то не так?
Код скрипта, взятый из примера и переделанный под мои нужды:

$(document).ready(function () {
    $('#timeValidationForm').bootstrapValidator({
        container: '#messages',
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            time: {
                validators: {
                    notEmpty: {
                        message: 'The full name is required and cannot be empty'
                    }
                },
                stringLength: {
                    min: 1,
                    max: 5,
                    message: 'Input must be larger than 1 and less than 5'
                }
            }
        }
    });
});


Код html. Нужно заметить, что валидация поля происходит в модальном окне и должна
работать без нажатия кнопки "submit":

@using( Html.BeginForm("ClockChanger", "Clocks", FormMethod.Post, new{@id="timeValidationForm",
@class="form-horizontal"} ) )
{
    
    
}


Скрипт подключаю в теге  с помощью 



    


Ответы

Ответ 1



В коде инициализации валидатора ошибка - скобка поставлена неверно и поле stringLength не входит в объект validators. $(document).ready(function () { $('#timeValidationForm').bootstrapValidator({ container: '#messages', feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { time: { validators: { notEmpty: { message: 'The full name is required and cannot be empty' }, stringLength: { min: 1, max: 5, message: 'Input must be larger than 1 and less than 5' } }, } } }); }); Исправленный вариант в fiddle.

суббота, 21 декабря 2019 г.

Как отправить картинку через ajax?

#javascript #jquery #ajax #post #form


Суть в том, что на страницу save.php посылается POST запрос с картинкой и парочкой
полей, а на странице main.html, с которой это сделали (form target="_blank" - присутствует
на форме) выполняется: 

$('#obj_d').html('Сохранено успешно');


Думаю можно как-то отправить картинку через $.ajax(), но не знаю как.
ID картинки cat_img_t. Что делает PHP: скрипт в файле save.php ловит картинку, изменяет
размер, кодирует в base64 и заносит в БД. Как отправить картинку через ajax?
    


Ответы

Ответ 1



На отправку данных с формы пишем обработчик: $(document).ready(function (e) { $('#-идентификатор формы написать сюда-').on('submit',(function(e) { e.preventDefault(); // делаем отмену действия браузера и формируем ajax var formData = new FormData($('#-идентификатор формы написать сюда-')[0]); // данные с формы завернем в переменную для ajax $.ajax({ type:'POST', // тип запроса url: $(this).attr('action'), // куда будем отправлять, можно явно указать data:formData, // данные, которые передаем cache:false, // кэш и прочие настройки писать именно так (для файлов) // (связано это с кодировкой и всякой лабудой) contentType: false, // нужно указать тип контента false для картинки(файла) processData: false, // для передачи картинки(файла) нужно false success:function(data){ // в случае успешного завершения console.log("Завершилось успешно"); // выведем в консоли успех console.log(data); // и что в ответе получили, если там что-то есть }, error: function(data){ // в случае провала console.log("Завершилось с ошибкой"); // сообщение об ошибке console.log(data); // и данные по ошибке в том числе } }); })); }); Кстати, для url по идее можно оставить вот так, если изначально все правильно вызывается: url: this.action, Либо написать явный путь url, как Вам удобнее. А еще, к примеру, если Вам нужно вызвать отправку данных с формы после выбора Вашей картинки, то после выбора можете написать вот это: $("#-идентификатор формы написать сюда-").submit(); Атрибут target - после того, как обработчик формы получает данные, он возвращает результат в виде HTML-документа. Вы можете определить окно, в которое будет загружаться итоговая веб-страница. Для этого используется атрибут target, в качестве его значения используется имя окна или фрейма. Если target не установлен, возвращаемый результат показывается в текущем окне. У Вас в коде написано: form target="_blank" - загружает страницу в новое окно браузера. Если не хотите новых страниц - уберите просто аттрибут и все. Вы переделаете на ajax и никаких вкладок не будет, при желании можете сделать скрытый

воскресенье, 1 декабря 2019 г.

Голосовое заполнение формы

#javascript #form


Подскажите кто какие библиотеки знает для голосового заполнения HTML форм или у кого
какие идеи и мысли есть насчет этого. Слышал что x-webkit-speech уже не работает ни
в одном браузере. 
Интересуют оффлайн решения 
    


Ответы

Ответ 1



А вот если у Яндекса использовать SpeechKit? https://tech.yandex.ru/speechkit/jsapi/ Сразу дополню, вот такая реализация от самого Яндекса: https://tech.yandex.ru/speechkit/jsapi/doc/dg/concepts/speechRecognition-docpage/#textline

Ответ 2



Первый же запрос в гугле выдал вот эту либу pocketsphinx.js. Но вообще, оффлайн распознавание голоса вещь довольно сложная. Например, эта либа требует webworker`ов и WebAssembly. Хотя вы можете заморочиться и пересобрать на asm.js. Рекомендую всё же использовать онлайн решения, они более простые в использовании.

воскресенье, 30 июня 2019 г.

Подстановка данных из формы с помощью jquery

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

. Вопросы появляются по очереди один за другим. Данные передаются на сервер после ответа на последний вопрос.
Задача: в некоторые вопросы необходимо подставлять предыдущие ответы. Т.е. подстановка должна происходить еще до того, как данные передались на сервер.
Как это можно реализовать с помощью jquery?
Простой пример:
Здравствуйте! Давайте знакомиться. Как Вас зовут?
{нужно подставить iac-name}, рады знакомству. На какой email нам выслать результаты анализа?
После ответа на все вопросы мы вышлем Вам результаты анализа на email {нужно подставить iac-email}. Подскажите, за последние 3 дня у Вас была головная боль?

В jquery я новичок, поэтому не знаю как и можно ли реализовать такую подставку данных. Но исхожу из таких соображений: раз каждому полю формы можно указать уникальный id, то значит можно брать из него данные и подставлять в текст.


Ответ

Как вариант вот так
$( "#iac-name" ).change(function() { $("#iac-email").text($( "#iac-name" ).val() + ", рады знакомству. На какой email нам выслать результаты анализа?"); });
Если содержимое
{нужно подставить iac-name}, рады знакомству. На какой email нам выслать результаты анализа?
Будет иметь вид
, рады знакомству. На какой email нам выслать результаты анализа?
Тогда можно так
var text = $("#iac-email").text(); $("#iac-email").text($( "#iac-name" ).val() + text);
Обновление
Логика такая, что я поместил в переменную text - следующий текст
, рады знакомству. На какой email нам выслать результаты анализа?
Затем обновил содержимое добавив введенное имя. Все это выполняется по событию $( "#iac-name" ).change. Писал в комметариях поэтому не исключено что где-то допустил ошибку.
Для
{нужно подставить iac-name}, рады знакомству. На какой email нам выслать результаты анализа?
Метод $("#iac-email").text() должен вернуть
{нужно подставить iac-name}, рады знакомству. На какой email нам выслать результаты анализа?

среда, 12 июня 2019 г.

Как связать форму входа с другой страницой

Как связать две страницы между собой?
Например, есть страница входа, где запрашивается имя пользователя, и вторая страница, где используется (отображение, вывод и т.д) имя, введенное при входе. Пример, при клике на add-name запоминается введенное значение и, по идее, должен быть переход на следующую страницу, как это правильно реализовать? И не будет ли конфликтов с двух страниц, использующий один и тот же код (файл, прост переменные другие будут)?
$(document).ready(function() { var name = ""; $("#add-name").click(function() { name = $("#name").val(); if($("#name").val() == "") { alert("Введите имя"); return false; } return false; }); });



Ответ

Приветствую! Если без использования PHP то вариантов не много.
JavaScript работает только на конкретной странице и понятия не имеет, что происходит на соседних. Параметр передавайте через URL: click А на next-page.html распарсите location.href. Только method в форме замените на GET, вместо POST Использовать какой-нибудь плагин для работы с cookie, вроде js-cookie после отправки формы сохраните данные туда, а на нужной странице извлекайте. Но размеры cookie сильно ограничены. Как в принципе и тело GET запроса для варианта 1, так что особо не увлекайтесь. :) Старый, добрый PHP

пятница, 26 апреля 2019 г.

new Date() не обновляет значения

Почему new Date возвращает одни и те же значения(одно и тоже время)? Нужно чтоб при добавление сообщения ему возвращалась соответствующие время(при котором он был добавлен). В коде ниже выводятся сообщения с одним и тем же значением времени, пока страницу не перезагрузишь.
В чем дело? я что то не так сделал или так и должно быть?

var time = new Date(); var timeS = time.toISOString(); $("#add-text").click( function() { var message = $("#text").val(); $("#chat").append("

" + message + "

"); $("#form")[0].reset(); var chat = $("#chat").html(); localStorage.setItem("chat", chat); return false; }); if(localStorage.getItem("chat")) { $("#chat").html(localStorage.getItem("chat")); }


Ответ

Объявляйте время при клике
$('#add-text').click(function(){ var time = new Date(); var timeS = time.toISOString(); /*Далее ваш код*/ })

четверг, 21 марта 2019 г.

Phalcon и валидация форм

Все привет. Кто сталкивался с компонентом PhalconValidation? Я, прочитав документацию, не могу понять, как производить валидацию, набросал вот такой вот подход: public function initialize() { $this->add('name', new PresenceOf(array( 'message' => 'Вы не заполнили Имя и Фамилию' )));
$this->add('name', new RegexValidator(array( 'pattern' => '/^[а-яА-ЯёЁa-zA-Z-]+$/ui', 'message' => 'Имя и Фамилия могут содержать только буквы и тире' )));
$this->add('name', new StringLength(array( 'max' => 50, 'min' => 5, 'messageMaximum' => 'Имя и Фамилия не может содержать больше 50 символов', 'messageMinimum' => 'Имя и Фамилия не может содержать меньше 5 символов' )));
$this->add('email', new PresenceOf(array( 'message' => 'Вы не заполнили Email адрес' )));
$this->add('email', new Email(array( 'message' => 'Не корректный Email адрес' )));
$this->add('password', new PresenceOf(array( 'message' => 'Вы не заполнили Пароль' )));
$this->add('password', new StringLength(array( 'min' => 8, 'minimumMessage' => 'Пароль не может быть короче 8 символов' )));
$this->add('confirm', new PresenceOf(array( 'message' => 'Вы не заполнили Подтверждение пароля' )));
$this->add('password', new Confirmation(array( 'message' => 'Пароли не совпадают', 'with' => 'confirm' ))); } Это неправильный подход, потому что если формы пустые, ошибки всплывают все, а не те, что проверяют форму на пустоту. Как исправить такое положение? И да, если установить 'cancelOnFail' => true, то валидация не пройдёт дальше той валидации, которая имеет этот параметр первая в очереди. UPD 06.11.14: Приведу пример валидации. Есть 4 поля, к примеру (имя/емэйл/пароль/и подтверждение пароля). Первым делом валидация проверяет заполнены поля или нет, потом поэтапно каждое поле, то есть изначально он проверяет все поля на пустоту, а потом все поэтапно, и поля не связаны между собой, за исключением пароля, и его подтверждения. Как то так.


Ответ

В чем проблема производить валидацию в два этапа и считать сообщения по выходу с первого? Зачем нужен PresenceOf, если для этого поля уже работает StringLength/Confirmation/Email? Phalcon, конечно, фреймворк с прибабахом, и валидация должна идти по группам, приложение разбиваться по неймспейсам, а объявление всего и вся через анонимные функции - это откровенная laravel-блевня, но здесь-то и задачи как таковой не стоит. Обновление @Bastian, если вы уже в самой задаче бьете ее на два этапа? Валидация одна, этапов два. Хотя объектов валидации будет два, наверное, мне лень было так глубоко лезть

среда, 9 января 2019 г.

Как отправить картинку через ajax?

Суть в том, что на страницу save.php посылается POST запрос с картинкой и парочкой полей, а на странице main.html, с которой это сделали (form target="_blank" - присутствует на форме) выполняется:
$('#obj_d').html('Сохранено успешно');
Думаю можно как-то отправить картинку через $.ajax(), но не знаю как. ID картинки cat_img_t. Что делает PHP: скрипт в файле save.php ловит картинку, изменяет размер, кодирует в base64 и заносит в БД. Как отправить картинку через ajax?


Ответ

На отправку данных с формы пишем обработчик:
$(document).ready(function (e) { $('#-идентификатор формы написать сюда-').on('submit',(function(e) { e.preventDefault(); // делаем отмену действия браузера и формируем ajax var formData = new FormData($('#-идентификатор формы написать сюда-')[0]); // данные с формы завернем в переменную для ajax
$.ajax({ type:'POST', // тип запроса url: $(this).attr('action'), // куда будем отправлять, можно явно указать data:formData, // данные, которые передаем cache:false, // кэш и прочие настройки писать именно так (для файлов) // (связано это с кодировкой и всякой лабудой) contentType: false, // нужно указать тип контента false для картинки(файла) processData: false, // для передачи картинки(файла) нужно false success:function(data){ // в случае успешного завершения console.log("Завершилось успешно"); // выведем в консоли успех console.log(data); // и что в ответе получили, если там что-то есть }, error: function(data){ // в случае провала console.log("Завершилось с ошибкой"); // сообщение об ошибке console.log(data); // и данные по ошибке в том числе } }); })); });
Кстати, для url по идее можно оставить вот так, если изначально все правильно вызывается:
url: this.action,
Либо написать явный путь url, как Вам удобнее.
А еще, к примеру, если Вам нужно вызвать отправку данных с формы после выбора Вашей картинки, то после выбора можете написать вот это:
$("#-идентификатор формы написать сюда-").submit();
Атрибут target - после того, как обработчик формы получает данные, он возвращает результат в виде HTML-документа. Вы можете определить окно, в которое будет загружаться итоговая веб-страница. Для этого используется атрибут target, в качестве его значения используется имя окна или фрейма. Если target не установлен, возвращаемый результат показывается в текущем окне.
У Вас в коде написано:
form target="_blank" - загружает страницу в новое окно браузера.
Если не хотите новых страниц - уберите просто аттрибут и все. Вы переделаете на ajax и никаких вкладок не будет, при желании можете сделать скрытый

вторник, 27 ноября 2018 г.

Как настроить всплывающее окно с fancybox после нажатия button с

Есть форма:


Подскажите плз, как после отправки формы открыть окно с блоком
на 5-10 секунд и пропадало, планирую сделать на fancybox
Планирую использовать:
$('#send').submit(function(e) { $.fancybox({ href: '#thx', modal: true }); return false; });
Но открытие так и не происходит....


Ответ

Решил сам: в конце php функции добавил код sleep(5);
а скрипт такой:
$('.send').click(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(data) { $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic', afterLoad: function() { setTimeout(function() { parent.$.fancybox.close({ closeEffect: 'elastic' }); }, 3000); } }); } }); });
может кому пригодится....

среда, 21 ноября 2018 г.

Не работает валидация форм с помощью Bootstrap

Доброго времени суток, форумчане!
Подскажите пожалуйста, почему не работает валидация формы. Делаю всё, как тут: jQuery Validate Demo и тут Validate a Form using jQuery and Bootstrap Validator
Может что-то не так с файлом скрипта? Или подключаю его как-то не так? Код скрипта, взятый из примера и переделанный под мои нужды:
$(document).ready(function () { $('#timeValidationForm').bootstrapValidator({ container: '#messages', feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { time: { validators: { notEmpty: { message: 'The full name is required and cannot be empty' } }, stringLength: { min: 1, max: 5, message: 'Input must be larger than 1 and less than 5' } } } }); });
Код html. Нужно заметить, что валидация поля происходит в модальном окне и должна работать без нажатия кнопки "submit":
@using( Html.BeginForm("ClockChanger", "Clocks", FormMethod.Post, new{@id="timeValidationForm", @class="form-horizontal"} ) ) {

}
Скрипт подключаю в теге с помощью


Ответ

В коде инициализации валидатора ошибка - скобка поставлена неверно и поле stringLength не входит в объект validators
$(document).ready(function () { $('#timeValidationForm').bootstrapValidator({ container: '#messages', feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { time: { validators: { notEmpty: { message: 'The full name is required and cannot be empty' }, stringLength: { min: 1, max: 5, message: 'Input must be larger than 1 and less than 5' } }, } } }); });
Исправленный вариант в fiddle

пятница, 5 октября 2018 г.

Голосовое заполнение формы

Подскажите кто какие библиотеки знает для голосового заполнения HTML форм или у кого какие идеи и мысли есть насчет этого. Слышал что x-webkit-speech уже не работает ни в одном браузере. Интересуют оффлайн решения


Ответ

А вот если у Яндекса использовать SpeechKit? https://tech.yandex.ru/speechkit/jsapi/
Сразу дополню, вот такая реализация от самого Яндекса: https://tech.yandex.ru/speechkit/jsapi/doc/dg/concepts/speechRecognition-docpage/#textline