<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jQuery и другое... &#187; form</title>
	<atom:link href="http://www.linkexchanger.su/tag/form/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linkexchanger.su</link>
	<description>css, html, php, javascript, jQuery, ajax ... - решения, примеры, рецепты</description>
	<lastBuildDate>Tue, 25 May 2010 08:13:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery Validation &#8211; проверка данных в ajax форме</title>
		<link>http://www.linkexchanger.su/2008/46.html</link>
		<comments>http://www.linkexchanger.su/2008/46.html#comments</comments>
		<pubDate>Thu, 13 Mar 2008 05:43:08 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[validator]]></category>
		<category><![CDATA[форма]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/46.html</guid>
		<description><![CDATA[Мы уже пробовали создать ajax-форму, об этом можно было прочитать в статье jQuery Form &#8211; делаем ajax-форму. Но любая форма без проверки данных, вводимых пользователем &#8211; это серьезная брешь в безопасности ресурса.
Важно! Никогда не стоит полагаться на проверки данных на стороне клиента! Обязательно проводите проверку на сервере!
Поэтому сегодня я предлагаю познакомиться с плагином jQuery Validation, [...]]]></description>
			<content:encoded><![CDATA[<p>Мы уже пробовали создать ajax-форму, об этом можно было прочитать в статье <a href="http://www.linkexchanger.su/2008/45.html">jQuery Form &#8211; делаем ajax-форму</a>. Но любая форма без проверки данных, вводимых пользователем &#8211; это серьезная брешь в безопасности ресурса.</p>
<blockquote><p><em>Важно! Никогда не стоит полагаться на проверки данных на стороне клиента! Обязательно проводите проверку на сервере!</em></p></blockquote>
<p>Поэтому сегодня я предлагаю познакомиться с плагином <strong>jQuery Validation</strong>, который позволит производить проверку вводимых данных &laquo;на лету&raquo; и, что немаловажно, очень хорошо взаимодействует с плагином <strong>jQuery Form</strong>. Ну а для начала просто посмотрите пример проверки данных в ajax форме&#8230;<span id="more-46"></span></p>
<p><iframe src="http://www.linkexchanger.su/example_jquery/validate.html" style="border: medium none " width="420" height="530"></iframe></p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/validate.zip">исходный код</a> примера и воспроизвести этот пример на своем сайте.</p></blockquote>
<p>Ну а теперь начнем разбираться. Сразу скажу, что для того, чтобы подробно рассказать о плагине <strong>jQuery Validation</strong>, не хватит и нескольких статей. Поэтому поставим себе целью по окончании прочтения статьи (и тестирования примера конечно) иметь некий базовый набор знаний, который поможет решить проблемы в самых распространенных случаях. Если же понадобится что-то большее, то подробную информацию Вы сможете найти на странице плагина <a href="http://docs.jquery.com/Plugins/Validation">jQuery Validation</a>.</p>
<p>Как обычно, сначала потребуется подключить библиотеку <strong>jQuery</strong> (<strong>jQuery Validation</strong> работает с версией 1.2.2 и выше). Понятно, что понадобится и <strong>jquery.form.js</strong>, и собственно <strong>query.validate.js</strong> &#8211; все это подключаем в разделе <strong>HEAD</strong> нужной страницы. Можно подключить и файл <strong>additional-methods.js</strong>, содержащий, как ясно из названия, дополнительные методы.</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.3.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.form.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.validate.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/additional-methods.js&quot;&gt;&lt;/script&gt;</pre>
<p>Стилевые таблицы и HTML-код Вы сможете посмотреть в файле примера, там нет ничего необычного. Отмечу только, что стоит следовать следующим рекомендациям по разметке:</p>
<p>Каждый элемент <strong>input</strong> или <strong>select</strong> имеет &laquo;свой&raquo; элемент <strong>label</strong> с атрибутом <strong>for</strong>, значение которого одинаково со<br />
значением атрибута <strong>id</strong> соответствующего элемента <strong>input</strong> или <strong>select</strong>. В общем, лучше на примере:</p>
<pre class="brush: xml;">&lt;label for=&quot;firstname&quot;&gt;Имя&lt;/label&gt;
&lt;input id=&quot;firstname&quot; name=&quot;fname&quot; type=&quot;text&quot; /&gt;</pre>
<p>Теперь приведу javascript-код. Несмотря на то, что выглядит он довольно страшно, ничего особенно сложного в нем нет.</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
  // готовим опции для метода
  // ajaxSubmit плагина jquery.form.js
  var options = {
  	target: &quot;#output&quot;,
    timeout: 3000 // тайм-аут
  };

  $(&quot;#myForm&quot;).validate({
  	submitHandler: function(form) {
   	  // вызываем метод ajaxSubmit
   	  // плагина jquery.form.js
  	  $(form).ajaxSubmit(options);
    },
    focusInvalid: false,
    focusCleanup: true,
    rules: {
      Name: {
      	required: true,
      	minlength: 2,
      	maxlength: 12
      },
      Email: {
      	required: true,
      	email: true
      },
      // .............
      // еще настройки
      // см. в исх.кодах
      // .............
      Examine: {
      	required: true,
      	equal: 13
      }
    },
    messages: {
      Name: {
        required: &quot;Укажите свое имя!&quot;,
        minlength: &quot;Не менее 2 символов&quot;,
        maxlength: &quot;Не более 12 символов&quot;
      },
      Email: {
        required: &quot;Нужно указать email адрес&quot;,
        email: &quot;Нужен корректный email адрес!&quot;
      },
      // .............
      // еще настройки
      // см. в исх.кодах
      // .............
      Examine: {
      	required: &quot;Надо решить этот пример!&quot;,
      	equal: &quot;Вы в школе учились?&quot;
      }
    },
    errorPlacement: function(error, element) {
      var er = element.attr(&quot;name&quot;);
      error.appendTo( element.parent()
      .find(&quot;label[@for=&quot;&quot; + er + &quot;&quot;]&quot;)
      .find(&quot;em&quot;) );
    }
});
});
&lt;/script&gt;</pre>
<p>Начало кода уже должно быть Вам знакомо по предыдущей статье, а сейчас самое интересное для нас это пожалуй основной метод &#8211; <strong>validate</strong>,</p>
<pre class="brush: jscript;">$(&quot;#myForm&quot;).validate({
  // список опций
});</pre>
<p>который может принимать просто огромное количество опций (набор пар ключ/значение) и в соответствии с ними выполнять проверку выбранной формы. Метод <strong>validate</strong> устанавливает обработчики событий для <strong>submit</strong>, <strong>focus</strong>, <strong>keyup</strong>, <strong>blur</strong> и <strong>click</strong>, чтобы переключиться в проверку всей формы или ее отдельных полей.</p>
<p>Приведу наиболее востребованные опции с пояснениями:</p>
<p><strong>submitHandler</strong> &#8211; когда форма корректно заполнена, вызывает обработчик для передачи формы. Заменяет собой передачу формы по умолчанию. В примере (см.выше) используется передача данных через метод <strong>ajaxSubmit()</strong> плагина <strong>jQuery Form</strong>.</p>
<p><strong>ignore</strong> &#8211; отменяет проверку полей формы с указанным селектором. В примере ниже &#8211; отменяет проверку для всех элементов с классом &laquo;<strong>ignore</strong>&laquo;.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
   ignore: &quot;.ignore&quot;
});</pre>
<p><strong>rules</strong> &#8211; пары ключ/значение, описывающие правила проверки. Ключ &#8211; это значение атрибута <strong>name</strong> элемента (или группы элементов для элементов <strong>checkbox</strong> и <strong>radio</strong>). Значение &#8211; объект (или строка), содержащий пары правило/параметр. Правила могут быть считаны еще и из разметки (классы, атрибуты, метаданные). Эти способы можно комбинировать между собой.</p>
<pre class="brush: jscript;">$(&quot;.selector&quot;).validate({
   rules: {
     // поле name - обязательное
     name: &quot;required&quot;,
     // для поля email
     email: {
       // заполнение обязательно
       required: true,
       // значение д.б. корректным
       email: true
     }
   }
});</pre>
<p><strong>messages</strong> &#8211; пары ключ/значение, описывающие сообщения в процессе проверки. Ключ &#8211; это значение атрибута <strong>name</strong> элемента (или группы элементов для элементов <strong>checkbox</strong> и <strong>radio</strong>). Значение же его будет отображено для соответствующего элемента.</p>
<pre class="brush: jscript;">$(&quot;.selector&quot;).validate({
   rules: {
     name: &quot;required&quot;,
     email: {
       required: true,
       email: true
     }
   },
   messages: {
     // если не заполнено поле name
     // user увидит сообщение
     name: &quot;Пожалуйста, представьтесь!&quot;,
     email: {
       // если не заполнено поле email
       // user увидит сообщение
       required: &quot;Нужно указать e-mail!&quot;,
       // если поле email некорректно
       // user увидит сообщение
       email: &quot;E-mail д.б. корректным!&quot;
     }
   }
});</pre>
<p><strong>onsubmit</strong>, <strong>onfocusout</strong>, <strong>onkeyup</strong>, <strong>onclick</strong> &#8211; отвечают за инициализацию проверки полей формы по  соответствующему событию. По умолчанию все установлены в <strong>true</strong>. Любые из этих опций можно отключить, установив значение <strong>false</strong>.</p>
<p><strong>errorPlacement</strong> &#8211; в качестве значения функция, принимающая два аргумента. Первый &#8211; ошибка как объект <strong>jQuery</strong>, второй &#8211; некорректный элемент как объект <strong>jQuery</strong>. С помощью этой опции сообщение об ошибке может быть выведено в целевой элемент в разметке страницы. Давайте разберем на примере:</p>
<pre class="brush: jscript;">errorPlacement: function(error, element) {
      var er = element.attr(&quot;name&quot;);
      error.appendTo( element.parent()
      .find(&quot;label[@for=&quot;&quot; + er + &quot;&quot;]&quot;)
      .find(&quot;em&quot;) );
    }</pre>
<p>В переменную <strong>er</strong> получаем значение атрибута <strong>name</strong> элемента, в котором обнаружена ошибка. Сообщение об ошибке добавляем куда? Правильно &#8211; в целевой элемент, который еще надо найти. Находим &laquo;родителя&raquo; этого элемента, в нем обнаруживаем элемент <strong>label</strong> с атрибутом <strong>for</strong>, который имеет значение точно такое же, которое у нас уже хранится в переменной <strong>er</strong> (помните рекомендации по разметке?), находим в нем целевой элемент <strong>em</strong>. Вот туда и будет вставлен текст сообщения об ошибке.</p>
<p>А теперь давайте подробнее остановимся на <strong>rules</strong> и <strong>messages</strong>. Ну наверное больше все-таки на <strong>rules</strong>, поскольку правила проверки задаются именно здесь, а в <strong>messages</strong> определяются сообщения, которые будут выводиться в том случае, когда не выполняется требование, определенное в <strong>rules</strong>.</p>
<p><strong>Методы проверки</strong><br />
Плагин <strong>jQuery Validation</strong> предоставляет целый набор стандартных методов проверки.<br />
<strong>required( )</strong> &#8211; делает элемент обязательным для заполнения. Возвращает <strong>false</strong>, если элемент пустой (текстовое поле), не отмечен (radio/checkbox) или ничего не выбрано (для select).</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  // здесь field - идентификатор
  // соответствующего поля ввода
  rules: { field: &quot;required&quot; }
});</pre>
<p><strong>remote(url) </strong>- запрашивает ресурс, расположенный на сервере через <strong>$.ajax</strong> (<strong>XMLHttpRequest</strong>) и передает пару ключ/значение, соответствующую атрибуту <strong>name</strong> проверяемого элемента в GET-запросе. Ответ сервера оценивается как данные в формате JSON и должен вернуть <strong>true</strong> для корректных данных, и <strong>false</strong> &#8211; для некорректных.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    email: {
      required: true,
      email: true,
      remote: &quot;check-email.php&quot;
    }
  }
});</pre>
<p><strong>minlength(length)</strong> &#8211; элемент ввода будет требовать ввести количество символов не менее, чем указано в <strong>length</strong>. Работает с текстовыми полями ввода (в т.ч. с password), c selects и checkbox.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      minlength: 3
    }
  }
});</pre>
<p><strong>maxlength(length)</strong> &#8211; элемент ввода будет требовать ввести количество символов не более, чем указано в <strong>length</strong>. Работает с текстовыми полями ввода (в т.ч. с password), c selects и checkbox.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      maxlength: 4
    }
  }
});</pre>
<p><strong>rangelength(range)</strong> &#8211; элемент ввода будет требовать ввести количество символов, соответствующее диапазону, указанному в <strong>range</strong>.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      rangelength: [2, 6]
    }
  }
});</pre>
<p><strong>min(value), max(value), range(range)</strong> &#8211; смысл тот же, только фигурирует уже не количество символов, а числа.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      range: [13, 23]
    }
  }
});</pre>
<p><strong>equalTo(other)</strong> &#8211; требует, чтобы элемент соответствовал (был эквивалентен) другому элементу, указанному в <strong>other</strong>. Возвращает <strong>true</strong>, если это условие выполняется, и <strong>false</strong> в противном случае. Работает с текстовыми полями.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    password: &quot;required&quot;,
    password_again: {
      equalTo: &quot;#password&quot;
    }
  }
});</pre>
<p><strong>email( )</strong> &#8211; делает элемент ввода требующим корректно введенного e-mail адреса. Возвращает <strong>true</strong>, если адрес корректный, и <strong>false</strong> в противном случае. Работает с текстовыми полями.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      email: true
    }
  }
});</pre>
<p><strong>url( )</strong> &#8211; делает элемент ввода требующим корректно введенного URL (типа, начните с http://). Возвращает <strong>true</strong>, если URL корректный, и <strong>false</strong> в противном случае. Работает с текстовыми полями.</p>
<pre class="brush: jscript;">$(&quot;#myform&quot;).validate({
  rules: {
    field: {
      required: true,
      url: true
    }
  }
});</pre>
<blockquote><p>Честно говоря, два последних метода из стандартного набора мне не понравились, впрочем как и из дополнительного набора методов в файле additional-methods.js. Метод <strong>url()</strong> например признал валидным http://www.собаказлая.ru, а метод <strong>email( )</strong> также пропускает кириллицу в адресе. Ну да ладно. Можно же дополнить плагин своим методом или доверить проверку валидности сценарию на сервере.</p></blockquote>
<p>Я рассказал далеко не все, и поэтому в заключение хочу привести еще несколько ссылок на примеры:<br />
<a href="http://jquery.bassistance.de/validate/demo/marketo/" target="_blank"> http://jquery.bassistance.de/validate/demo/marketo/</a><br />
<a href="http://jquery.bassistance.de/validate/demo/marketo/step2.htm" target="_blank"> http://jquery.bassistance.de/validate/demo/marketo/step2.htm</a><br />
<a href="http://jquery.bassistance.de/validate/demo/milk/" target="_blank"> http://jquery.bassistance.de/validate/demo/milk/</a><br />
<a href="http://jquery.bassistance.de/validate/demo/multipart/" target="_blank"> http://jquery.bassistance.de/validate/demo/multipart/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/46.html/feed</wfw:commentRss>
		<slash:comments>112</slash:comments>
		</item>
		<item>
		<title>jQuery Form &#8211; делаем ajax-форму</title>
		<link>http://www.linkexchanger.su/2008/45.html</link>
		<comments>http://www.linkexchanger.su/2008/45.html#comments</comments>
		<pubDate>Mon, 10 Mar 2008 21:05:15 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[форма]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/45.html</guid>
		<description><![CDATA[Плагин jQuery Form позволяет не только сделать новые ajax-формы, но и довольно просто &#171;проапгрейдить&#187; уже существующие формы таким образом, чтобы их можно было использовать вместе с Ajax. Основные методы, ajaxForm и ajaxSubmit, собирают информацию из элементов формы, поддерживают многочисленные опции, использование которых даст полный контроль над передачей данных.
Итак, начнем. Нам потребуется подключить к странице два [...]]]></description>
			<content:encoded><![CDATA[<p>Плагин <strong>jQuery Form</strong> позволяет не только сделать новые <strong>ajax-формы</strong>, но и довольно просто &laquo;проапгрейдить&raquo; уже существующие формы таким образом, чтобы их можно было использовать вместе с Ajax. Основные методы, <strong>ajaxForm</strong> и <strong>ajaxSubmit</strong>, собирают информацию из элементов формы, поддерживают многочисленные опции, использование которых даст полный контроль над передачей данных.<span id="more-45"></span></p>
<p>Итак, начнем. Нам потребуется подключить к странице два файла: библиотеку <strong>jQuery</strong> и файл <strong>jquery.form.js</strong>. Сделаем это в разделе <strong>HEAD</strong>.</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.1.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.form.js&quot;&gt;&lt;/script&gt;</pre>
<p>Затем создадим самую простейшую форму, не содержащую какой-либо специальной разметки:</p>
<pre class="brush: xml;">&lt;form id=&quot;myForm&quot; action=&quot;comment.php&quot; method=&quot;post&quot;&gt;
  Имя: &lt;input type=&quot;text&quot; name=&quot;name&quot; /&gt;
  Комментарий: &lt;textarea name=&quot;comment&quot;&gt;&lt;/textarea&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Комментировать&quot; /&gt;
&lt;/form&gt;</pre>
<p>и добавим еще немного javascript:</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
   $(&quot;#myForm&quot;).ajaxForm(function() {
     alert(&quot;Спасибо за комментарий!&quot;);
   });
});
&lt;/script&gt;</pre>
<p>Вот так просто, но поспешу Вас разочаровать &#8211; то, что мы сделали, из серии &laquo;пыль в глаза&raquo;. Объясню почему. Когда мы нажмем кнопку &laquo;Комментировать&raquo; значения полей <strong>name</strong> и <strong>comment</strong> будут переданы методом <strong>POST</strong> файлу <strong>comment.php</strong>. Если сервер вернет успешный ответ (т.е. всего лишь код 200) &#8211; пользователь увидит сообщение &laquo;Спасибо за комментарий!&raquo;.</p>
<blockquote><p>Эффектнее было бы не выводить сообщение в <strong>alert()</strong>, а вставить сообщение непосредственно в <strong>DOM</strong>.</p></blockquote>
<p>Так что все, что мы здесь выиграли &#8211; избавились от перезагрузки страницы, в принципе уже неплохо, но хотелось бы большего&#8230;</p>
<p>Но давайте сначала попробуем выяснить, в чем его отличие метода <strong>ajaxForm</strong> от метода <strong>ajaxSubmit</strong>. Оба метода либо не принимают аргументов, либо принимают один аргумент, который может быть или функцией или объектом (в парах ключ/значение могут быть переданы различные опции).</p>
<p>Первое отличие состоит в  том, что метод <strong>ajaxSubmit</strong> отправляет данные из формы, а метод <strong>ajaxForm</strong> &#8211; нет. Когда вызывается метод <strong>ajaxSubmit</strong> он упорядочивает данные формы в строку запроса и отправляет их серверу. Когда же вызывается метод <strong>ajaxForm</strong> &#8211; он только добавляет необходимое событие в форму таким образом, что можно определить, когда пользователь отправил данные.<br />
Второе отличие: при использовании <strong>ajaxForm</strong> передаваемые значения будут включать пару имя/значение для самой кнопки (как в примере, или координаты клика мышью, если используется картинка).<br />
<strong> Вывод:</strong> это не значит, что метод <strong>ajaxForm</strong> &#8211; плохой, а  метод <strong>ajaxSubmit</strong> &#8211; хороший. Просто они разные. И какой именно метод использовать &#8211; надо решать в каждом конкретном случае.</p>
<p>Давайте теперь познакомимся с доступными опциями, которые принимают оба этих метода. Посмотрим фрагмент кода, чтобы увидеть как задаются опции:</p>
<pre class="brush: jscript;">// готовим объект
var options = {
  target: &quot;#divToUpdate&quot;,
  url: &quot;form.php&quot;,
  success: function() {
        alert(&quot;Спасибо за комментарий!&quot;);
  }
};
// передаем опции в  ajaxSubmit
$(&quot;#myForm&quot;).ajaxSubmit(options);</pre>
<p><strong>target</strong> &#8211; идентифицирует тот элемент (или элементы) на странице, который должен быть обновлен при поступлении ответа от сервера. Значение может быть определено как объект или селектор <strong>jQuery</strong> или элемент <strong>DOM</strong>. Значение по умолчанию &#8211; <strong>null</strong>.<br />
<strong>url</strong> &#8211; URL, куда должны быть переданы данные из формы. Значение по умолчанию &#8211; значение атрибута <strong>action</strong> формы.<br />
<strong>type</strong> &#8211; метод, с помощью которого должны быть отправлены данные из формы (<strong>GET</strong> или <strong>POST</strong>). Значение по умолчанию &#8211; значение атрибута <strong>method</strong> формы. Если атрибут не определен, используется метод <strong>GET</strong>.<br />
<strong>beforeSubmit</strong> &#8211; функция, которая будет вызвана до отправки данных из формы. Функция, вызываемая тут, может позволить выполнить какие-либо действия до отправки данных, например проверку введенных данных. И если она возвращает <strong>false</strong> &#8211; данные не будут отправлены на сервер. Принимает три аргумента: массив с данными формы, jQuery-объект формы, объект из опций определенных в <strong>ajaxForm/ajaxSubmit</strong>. Массив данных формы принимает такой вид:</p>
<pre class="brush: jscript;">[ { name: &quot;username&quot;, value: &quot;Vasya&quot; },
 { name: &quot;password&quot;, value: &quot;secret&quot; } ]</pre>
<p>Значение по умолчанию &#8211; <strong>null</strong>.<br />
<strong>success</strong> &#8211; функция, которая будет вызвана после отправки данных серверу и при условии успешного ответа сервера. Полученные данные &#8211; или <strong>responseText</strong> или <strong>responseXML</strong>, в зависимости от значения опции <strong>dataType</strong>. Значение по умолчанию &#8211; <strong>null</strong>.<br />
<strong>dataType</strong> &#8211; определяет ожидаемый тип данных в ответе сервера. Может принимать значения: <strong>null</strong>, &laquo;<strong>xml</strong>&laquo;, &laquo;<strong>script</strong>&laquo;, или &laquo;<strong>json</strong>&laquo;. Опция позволяет точно определить, как именно должен быть обработан ответ сервера.<br />
<strong>- &laquo;xml&raquo;:</strong> if dataType == &laquo;xml&raquo; ответ сервера рассматривается как <strong>XML</strong> и в <strong>success</strong> (если опция определена) отправляется значение <strong>responseXML</strong>;<br />
<strong>- &laquo;json&raquo;:</strong> if dataType == &laquo;json&raquo; ответ сервера будет выполнен и передан в <strong>success</strong> (если опция определена);<br />
<strong>- &laquo;script&raquo;:</strong> if dataType == &laquo;script&raquo; ответ сервера будет выполнен в глобальном контексте;<br />
Значение по умолчанию &#8211; <strong>null</strong>.<br />
<strong>semantic</strong> &#8211; флаг, определяющий должны ли данные передаваться в строгом порядке следования (это происходит медленнее).</p>
<blockquote><p>Упорядочивание данных формы происходит в порядке следования элементов, исключая элементы <strong>input</strong>, имеющие тип <strong>image</strong>.</p></blockquote>
<p>Вы должны всего лишь установить эту опцию в <strong>true</strong>, если Ваш сервер требует строгого порядка следования <strong>И</strong> форма содержит элементы <strong>input</strong> типа <strong>image</strong>. Значение по умолчанию &#8211; <strong>false</strong>.<br />
<strong>resetForm</strong> &#8211; флаг, определяющий должна ли форма быть сброшена если передача данных была успешной.  Значение по умолчанию &#8211; <strong>null</strong>.<br />
<strong>clearForm</strong> &#8211; флаг, определяющий должна ли форма быть очищена если передача данных была успешной.  Значение по умолчанию &#8211; <strong>null</strong>.</p>
<p>Методы <strong>ajaxForm</strong> и <strong>ajaxSubmit</strong> не единственные. Давайте немного познакомимся с остальными.</p>
<p>Метод <strong>formSerialize</strong> &#8211; упорядочивает данные из элементов формы в строку запроса. Метод возвращает строку в формате: name1=value1&amp;name2=value2.</p>
<pre class="brush: jscript;">var qString = $(&quot;#myFormId&quot;).formSerialize();
  // теперь данные могут быть отправлены
  //  через $.get, $.post, $.ajax, и т.д.
$.post(&quot;myscript.php&quot;, qString);</pre>
<p>Метод <strong>fieldSerialize</strong> &#8211; упорядочивает данные из элементов формы в строку запроса. Удобно применять, когда требуется упорядочить в строку запроса только часть данных из формы. Метод возвращает строку в формате: name1=value1&amp;name2=value2</p>
<pre class="brush: jscript;">var qString = $(&quot;#myFormId .myFields&quot;).fieldSerialize();</pre>
<p>Метод <strong>fieldValue</strong> &#8211; возвращает значения выбранных элементов в виде массива. С версии 0.91, метод всегда возвращает именно массив. Если нет корректных данных возвращается пустой массив, в противном случае массив содержит один или более элементов.</p>
<pre class="brush: jscript;">// получаем значения для полей с типом password
var value = $(&quot;#myFormId :password&quot;).fieldValue();
alert(&quot;Пароль: &quot; + value[0]);</pre>
<p>Метод <strong>resetForm</strong> &#8211; сбросит форму в начальное состояние через новый вызов элементов формы из объектной модели документа.</p>
<pre class="brush: jscript;">$(&quot;#myFormId&quot;).resetForm();</pre>
<p>Метод <strong>clearForm</strong> &#8211; очищает элементы формы. Этот метод очистит все элементы ввода с типом text, password, textarea, очистит выбор в элементах select и снимет отметки с элементов radio и checkbox.</p>
<pre class="brush: jscript;">$(&quot;#myFormId&quot;).clearForm();</pre>
<p>Метод <strong>clearFields</strong> &#8211; очищает элементы формы. Удобно применять когда требуется очистить только часть формы.</p>
<pre class="brush: jscript;">$(&quot;#myFormId .myFields&quot;).clearFields();</pre>
<p>Согласен, согласен&#8230; Получилось очень много и довольно нудно. Поэтому вот Вам пример формы, попробуйте его, а при желании посмотрите исходные коды этого примера. Я старался все очень подробно комментировать.</p>
<p><iframe src="http://www.linkexchanger.su/example_jquery/form.html" style="border: medium none " width="420" height="530"></iframe></p>
<blockquote><p>Вы можете скачать <a href="http://www.linkexchanger.su/example_jquery/form.zip">исходный код</a> примера, и при наличии библиотеки jQuery воспроизвести это пример на своем сайте.</p></blockquote>
<p>Важно! Помните, что любая форма &#8211; потенциальная дыра в безопасности. Никогда не стоит полагаться на проверку данных на стороне клиента. Обязательно производите проверку данных на сервере!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/45.html/feed</wfw:commentRss>
		<slash:comments>84</slash:comments>
		</item>
	</channel>
</rss>
