За последние 24 часа нас посетили 20166 программистов и 1577 роботов. Сейчас ищут 1957 программистов ...

jQuery remote validation bootstrap tooltip

Тема в разделе "JavaScript и AJAX", создана пользователем igordata, 19 фев 2015.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    запилил случайно простой плагинчик для удалённой валидации. Наверное таких уже много, но вот этот вышел очень простым. У него всего один параметр - урл. На этот урл отправляется $_POST['name'] который равен name данного инпута, $_POST['value'] равный текущему val(). Так же постом отправляются все data-атрибуты данного инпута. Если вернётся OK, то инпут позеленеет. Если вернётся что-то другое - выведет тултип с этим текстом, а инпут покраснеет. Просто как палка. Запрос отправляется по change и keyup через 200 мс после последнего изменения или нажатия. Ну чтобы не слать по запросу при каждом нажатии.

    Код (PHP):
    1. (function ($) {
    2.   $.fn.remoteValidate = function (url) {
    3.     return this.each(function () {
    4.       var el = $(this);
    5.       var parent = el.parent();
    6.       var timer = 0;
    7.       el.on('change keyup', function () {
    8.         var data = {};
    9.         $.each(el.data(), function (k, v) {
    10.           if (!= 'bs.tooltip') {
    11.             data[k] = v;
    12.           }
    13.         });
    14.         data.name = el.prop('name');
    15.         data.value = el.val();
    16.         if (timer > 0) {
    17.           clearTimeout(timer);
    18.         }
    19.         timer = setTimeout(function () {
    20.           $.post(url, data, function (reply) {
    21.             if (reply == 'OK') {
    22.               parent.removeClass('has-error');
    23.               parent.addClass('has-success has-feedback');
    24.               el.siblings('span.glyphicon').remove();
    25.               $('<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>').appendTo(parent);
    26.               el.tooltip("destroy");
    27.             } else {
    28.               parent.removeClass('has-success');
    29.               parent.addClass('has-error has-feedback');
    30.               el.siblings('span.glyphicon').remove();
    31.               $('<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>').appendTo(parent);
    32.               el.tooltip('destroy');
    33.               el.tooltip({placement: 'top', trigger: 'manual', title: reply}).tooltip('show');
    34.             }
    35.           });
    36.           timer = 0;
    37.         }, 200);
    38.       });
    39.     });
    40.   };
    41. }(jQuery));
    применять так

    Код (PHP):
    1.   $(селектор).remoteValidate('/api/admin/community/create/check');
    Ну может кому подойдет.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    /updated
    Браузер зависал иногда при попытке скукожить bs.tooltip, который живёт почему-то в дата. =)
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А куда он отправляет запрос? Из заголовков берет домен?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Fell-x27 путь тот же, что для <a href='/api/admin/community/create/check'>click</a>
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну блин чувак, ну со слешом - от корня текущего домена, без слеша - от текущей папки. Ты чего это вдруг? (о_О)
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    ТупанулЪ, прдонте.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Но спасибо за беседу в темке ^__^