DIY WordPress contact form with JQuery (1)

文章题目就很清楚了,这是说一下如何利用JQueryWordPress上实现contact form的。需要DIY的原因是,虽然WordPress提供了很多contact form的插件,都很强大和多功能,而那些插件大多是通过新建页面插入short code调用联系表单。但是我需要的是能让我插入到模板任意位置(比如现在的index.php中)的contact form代码和一些简单的功能就够了;而且还必需是Ajax刷新的,因为我的主题是标签式浏览,不用Ajax的结果很严重。

表单的功能有几个(实例看本站的contact页面):

  1. Ajax提交(JQuery实现);
  2. 自动检测填写内容是否留空或错误邮址(JQuery实现);
  3. 提供可选联系内容(下拉表单);
  4. 可插入到模板的任意位置,不局限于新建页面使用。

如果你对上面的内容有兴趣,就继续看吧。

首先是表单的构成,代码如下:

<ol class="forms">

<li><label for="contactName">your name</label>
<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</li>

<li><label for="email">your E-mail</label>
<input type="text" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" class="requiredField email" />
<?php if($emailError != '') { ?>
<span class="error"><?=$emailError;?></span>
<?php } ?>
</li>

<li class="textarea"><label for="commentsText">your words</label>
<textarea name="comments" id="commentsText" rows="20" cols="30" class="requiredField"><?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea>
<?php if($commentError != '') { ?>
<span class="error"><?=$commentError;?></span>
<?php } ?>
</li>

<li class="inline"><input type="checkbox" name="sendCopy" id="sendCopy" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> /><label for="sendCopy">Send a copy of this email to yourself</label></li>

<li class="screenReader"><label for="checking" class="screenReader">If you want to submit this form, do not enter anything in this field</label><input type="text" name="checking" id="checking" class="screenReader" value="<?php if(isset($_POST['checking'])) echo $_POST['checking'];?>" /></li>

<li class="buttons"><input type="hidden" name="submitted" id="submitted" value="true" /><button type="submit">Send to Jinwen &raquo;</button></li>

</ol>

基本上表单这样构成,能看到的是常见的name,mail,comment三个部分,这些都是通用的,大家无需更改。至于倒数第二个list中的screenReader是用来防止垃圾留言的,有兴趣的朋友可以看这篇介绍文章。还有就是上面代码中的一些变量部分(带$部分),看不看得懂也无所谓的,这些是用来检测填写内容的正确与否。

有了上面的代码部分,接着我们需要一个无错提交表单后的欢迎信息,代码如下:

<?php if(isset($emailSent) && $emailSent == true) { ?>

<div class="thanks">
<h1>Thanks, <?=$name;?></h1>
<p>你的邮件已成功发送!我会尽快与你联系。Have a nice day ^_^ </p>
</div>

<?php } else { ?>

<?php if(isset($hasError) || isset($captchaError)) { ?>
<p class="error">There was an error submitting the
<?php } ?>

<form action="http://www.saywp.com" id="contactForm" method="post">

*****在这里插入上面一段代码<ol>...</ol>*****

</form>

<?php } ?>

到这里要说明的是基本上上面的代码都可以全用,需要注意的是你必需修改如下一句中的网址为你表单所在页面的位置,否则提交不会成功的。

<form action="http://www.saywp.com" id="contactForm" method="post">

至此,我们完成了contact form中的基本部分,我先写到这里,在下一篇我继续写表单内容的判断部分代码,感兴趣的朋友下篇见。

分类:WordPress, theme skill;标签:, , , , ;收藏本文的永久链接

25 Responses to “DIY WordPress contact form with JQuery (1)”

  1. 老时 回复此留言 2009/03/31 03:10 #comment-5467

    很专业啊,能不能帮我看下我的评论框,都飞了。谢谢。

  2. richard 回复此留言 2009/03/31 07:25 #comment-5472

    呵呵,现在这个主题提供下载么?若会提供大概是什么时间呢

  3. Poshi 回复此留言 2009/03/31 02:10 #comment-5465

    不錯,這正是我考慮的問題,不過本來我是想用另一個辦法實現,就要改幾個地方了,你這個直接插入,倒是沒那麼亂

  4. Alex 回复此留言 2009/03/31 02:58 #comment-5466

    不錯,學習了

  5. 老时 回复此留言 2009/03/31 09:09 #comment-5476

    @Jinwen 主机暂时有点问题。等等就好。

  6. 爱月 回复此留言 2009/03/31 10:40 #comment-5482

    技术更新太快。。。也得考虑下用户体验啊。。。
    你现在这样的评论就已经很和谐了~呵呵~

  7. Jinwen 回复此留言 2009/03/31 09:04 #comment-5475

    @老时 你的网站打不开哦。

  8. welee 回复此留言 2009/03/31 09:24 #comment-5479

    先学习,然后放到我下个主题去,呵呵!

  9. Leeiio 回复此留言 2009/03/31 10:02 #comment-5481

    我也去整一个去哈哈~

  10. Jinwen 回复此留言 2009/03/31 17:48 #comment-5496

    @爱月 还是要写出来的,因为在网站上看到了,别人就问,所以写了就好,不能懒,呵呵。

  11. winlon 回复此留言 2009/04/02 11:37 #comment-5556

    标题用英文的!blog要面向英文访客?

  12. Jinwen 回复此留言 2009/04/02 20:58 #comment-5568

    @winlon 不是的,因为标题用英文写,永久链接那里直接生成,不用改了。

    • neva 回复此留言 2010/06/09 11:45 #comment-14700

      我是在想让一个导航链接到联系页面,联系页面是个独立页,我不知道导航链接怎么写,还有就是处理表单信息的页面和JSCRIPT都放到哪啊

    • neva 回复此留言 2010/06/09 11:55 #comment-14701

      网址忘了说了,加上

  13. adomit 回复此留言 2009/04/24 16:55 #comment-6216

    我想知道您这个文章是直接修改插件的表单还是自己直接创建联系单页的?我有点糊涂,不好下手.

  14. adomit 回复此留言 2009/04/24 17:26 #comment-6220

    @Jinwen 牛X啊,这么晚来回复这么及时~~~这个功能我很想学习,可惜看了4篇,还是没搞成功.能麻烦你帮忙指点一下开头具体是创建什么样子的单页好么?是不是直接在模板下面建立一个单页的模板那样子?

  15. adomit 回复此留言 2009/04/24 17:29 #comment-6221

    另外非常想知道WordPress-ajax-contact-form-php-code这个文件是放到哪里的?没有开始的头绪有点摸不着路.呵呵

  16. adomit 回复此留言 2009/04/24 17:43 #comment-6223

    @Jinwen 明白了,我看到第一篇开头说到的插入想要的地方了.哈哈~感谢感谢

  17. Jinwen 回复此留言 2009/04/24 17:09 #comment-6219

    @adomit 是自己直接创建联系单页。

  18. Jinwen 回复此留言 2009/04/24 17:36 #comment-6222

    @adomit 这里介绍的办法是不需要建立单页的。比如如果你需要在首页内的某一个位置内添加表单,则你就把WordPress-ajax-contact-form-php-code内的代码复制到index.php文件内相应的位置则可。

  19. Eric 回复此留言 2010/05/12 14:11 #comment-14388

    测试看一下

  20. neva 回复此留言 2010/06/09 14:44 #comment-14702

    我是想把联系页面放在单独页面中,用导航怎么实现啊

    • Jinwen 回复此留言 2010/06/09 14:50 #comment-14703

      一个方法是你自己建立一个模板,把表单的内容都填上,然后新建一个页面,选上这个模板。这样就可以在导航的页面列表中体现。或者自己手动添加导入连接。


The trackbacks and pingpacks: