Вебформы на ajax xslt — различия между версиями
Deez (обсуждение | вклад) (Новая страница: «Сейчас мы в несколько довольно несложных действий заставим нашу вебформу, добавленную с п…») |
Deez (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
<xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" /> | <xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" /> | ||
</source> | </source> | ||
− | Всё, с шапкой закончили, так как сам jquery у нас уже подключен, | + | Всё, с шапкой закончили, так как сам jquery у нас уже подключен, макросом |
<source lang="php"> | <source lang="php"> | ||
− | + | <xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" /> | |
− | |||
</source> | </source> | ||
Теперь переходим к шаблону вебформ. | Теперь переходим к шаблону вебформ. | ||
− | Открываем его.(если | + | Открываем его.(если у вас шаблон demodizzy, то он находиться по адресу /xsltTpls/modules/webforms/add.xsl) |
− | и | + | и фрагмент кода |
<source lang="php"> | <source lang="php"> | ||
− | <form enctype="multipart/form-data" | + | <xsl:template match="udata[@module = 'webforms'][@method = 'add']"> |
− | + | <form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data"> | |
− | + | <xsl:apply-templates select="items" mode="address" /> | |
− | + | <xsl:apply-templates select="groups/group" mode="webforms" /> | |
− | + | <input type="hidden" name="system_form_id" value="{/udata/@form_id}" /> | |
− | + | <input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" /> | |
− | </form> | + | <div class="form_element"> |
+ | <xsl:apply-templates select="document('udata://system/captcha/')/udata" /> | ||
+ | </div> | ||
+ | <div class="form_element"> | ||
+ | <input type="submit" class="button" value="Отправить" /> | ||
+ | </div> | ||
+ | </form> | ||
+ | </xsl:template> | ||
</source> | </source> | ||
заменяем на вот такой | заменяем на вот такой | ||
<source lang="php"> | <source lang="php"> | ||
− | <form id="umi_the_best" enctype="multipart/form-data" | + | <xsl:template match="udata[@module = 'webforms'][@method = 'add']"> |
− | + | <form id="umi_the_best" method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data"> | |
− | + | <xsl:apply-templates select="items" mode="address" /> | |
− | + | <xsl:apply-templates select="groups/group" mode="webforms" /> | |
− | + | <input type="hidden" name="system_form_id" value="{/udata/@form_id}" /> | |
− | + | <input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" /> | |
− | </form> | + | <div class="form_element"> |
− | + | <xsl:apply-templates select="document('udata://system/captcha/')/udata" /> | |
− | <script type="text/javascript"> | + | </div> |
− | + | <div class="form_element"> | |
− | + | <input type="submit" class="button" value="Отправить" /> | |
− | + | </div> | |
− | + | </form> | |
− | + | ||
− | </script> | + | <script type="text/javascript"> |
+ | $(document).ready(function(){ | ||
+ | $("#umi_the_best").ajaxForm(function() { | ||
+ | alert("Спасибо за ваш отзыв!"); | ||
+ | }); | ||
+ | }); | ||
+ | </script> | ||
+ | </xsl:template> | ||
</source> | </source> | ||
Всё, теперь форма у нас работает без перезагрузки страницы. | Всё, теперь форма у нас работает без перезагрузки страницы. | ||
Внимание, работа данного метода проверена на версии 2.8.5.3, если ваша версия ниже, работа этого метода не гарантирована. | Внимание, работа данного метода проверена на версии 2.8.5.3, если ваша версия ниже, работа этого метода не гарантирована. |
Версия 20:06, 2 сентября 2012
Сейчас мы в несколько довольно несложных действий заставим нашу вебформу, добавленную с помощью модуля обратная связь работать без перезагрузки страницы. В этом нам поможет jquery плагин Form. Для начала открываем шаблон, где размещается шапка необходимой нам страницы и между тэгами head, в самом низу добавляем строчки
<!-- ajax jquery Forms -->
<script src="http://malsup.github.com/jquery.form.js" type="text/javascript"></script>
<!-- end ajax jquery forms -->
Внимание строчка обязательно должна быть ниже макроса
<xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" />
Всё, с шапкой закончили, так как сам jquery у нас уже подключен, макросом
<xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes" />
Теперь переходим к шаблону вебформ. Открываем его.(если у вас шаблон demodizzy, то он находиться по адресу /xsltTpls/modules/webforms/add.xsl) и фрагмент кода
<xsl:template match="udata[@module = 'webforms'][@method = 'add']">
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>
заменяем на вот такой
<xsl:template match="udata[@module = 'webforms'][@method = 'add']">
<form id="umi_the_best" method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#umi_the_best").ajaxForm(function() {
alert("Спасибо за ваш отзыв!");
});
});
</script>
</xsl:template>
Всё, теперь форма у нас работает без перезагрузки страницы.
Внимание, работа данного метода проверена на версии 2.8.5.3, если ваша версия ниже, работа этого метода не гарантирована.