Yii Framework Forum: Как реализовать валидацию полей формы по Ajax - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Как реализовать валидацию полей формы по Ajax Rate Topic: -----

#1 User is offline   redcore 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 02-April 09

Posted 10 April 2009 - 07:41 AM

День добрый!
Начал разбираться с фреймворком, это мой первый опыт в MVC на PHP, до сегодняшнего дня знаком был с этой технологией по опыту программирования на Cocoa для Макинтоша.

Вопрос собственно, как красиво сделать проверку формы по ajax, чтобы не перегружать всю форму, а получать сообщение о неправильном поле и выводить его в div контейнер. Например здесь https://twitter.com/signup сделана проверка доступности username (попробуйте в поле username ввести ae).
Если ставить задачу шире, то можно и не только результат проверки выводить но и перегружать отображение формы при успешном submit-e.
Искал в документации и примерах но ничего подходящего не нашел. Спасибо заранее!
0

#2 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 10 April 2009 - 04:16 PM

Если простая валидация полей без отправки всех данных - просто вешаем действие ajax.post($(this).value) на то что кликнул и передаем в какой то контроллер где экшин обработает пришедшие данные и вернет ошибка это или поле заполнено верно. после этого в js проверяете что пришло в ответ и решаете формировать ошибку или же пропускать дальше к работе. всё просто
0

#3 User is offline   carat 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 60
  • Joined: 12-February 09

Posted 16 April 2009 - 07:27 AM

в ниже приведенном скрипте делается подзагрузка
списка городов для определ. страны. поковыряйся.
( вообщето наверно вопрос не совсем по теме Yii )

в твоей ссылке примера проверка привязаны к событию
onblur инпута

для вывода сообщ. делай так:
[tt]document.getElementById('id твоего div').innerHTML = 'текст ошибки';[/tt]

[tt]//срабатывает на onchange элемента select
    function loadCities(country_id) {
        loadDoc('cities/list/'+country_id);
    }
    var req = null;
//запрос
    function loadDoc(url) {
        req = (typeof(window.ActiveXObject)=='undefined' ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"));
        req.onreadystatechange = processReqChange;
        req.open("GET", url);
        req.send(null);
    }
//обработка ответа
    function processReqChange() {
        if ((req.readyState == 4) && (req.status == 200)) {
            alert(req.responseText); //test
            //
            //  тута изголяйся как хошь
            //
            req = null;
        }
    }[/tt]

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users