技术文摘

帝国cms二次开发AJAX验证标题是否重复

作者:雨祺   发表于:
浏览:56次    字数:1882  原创
级别: 站长   总稿: 68 篇,  月稿: 0
帝国cms后台发信息最怕点击提交后,提示标题重复又要重新写一遍。现在给大家分享一款实时验证标题的方法,这样就可以避免出现重复的信息。
帝国CMS-AJAX验证标题是否重复方法
1、帝国cms后台 - 管理数据表 - 找到自己使用的数据表 - 修改title字段 - 输入表单使用下面的代码
找到代码
<inputtype=textname=titlevalue="<?=ehtmlspecialchars(stripSlashes($r[title]))?>"size="60">
替换为
<inputtype=textname=titlevalue="<?=ehtmlspecialchars(stripSlashes($r[title]))?>"size="60"onblur="checkTitle()">
在输入表单最下面加入如下代码
  1. <script type="text/javascript"src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script>   
  2. <script type="text/javascript">   
  3. functioncheckTitle()   
  4. {         
  5. varclassid=<?=$_GET[classid]?>;   
  6. varid=<?=$_GET[classid]?>;   
  7. vartit=document.add.title.value;   
  8. console.log("我是标题="+tit);   
  9. console.log("我是classid="+classid);   
  10. console.log("我是id="+id);   
  11. $.ajax({   
  12. url: 'ReTitleAjax.php?classid='+classid+'&id='+id+'&title='+tit,   
  13. dataType:"json",   
  14. cache: false,   
  15. error: function(){   
  16. alert("检测失败,请重试");   
  17. },   
  18. success: function(data){   
  19. if(data==1){   
  20. alert('重复标题');   
  21. }   
  22. if(data==0){   
  23. //alert('可以添加信息'); 
  24. console.log("可以添加信息");   
  25. }   
  26. }   
  27. });       
  28. }   
  29. </script> 
接着新建一个php文件,保存在 /e/admin/ReTitleAjax.php ,代码如下
  1. define('EmpireCMSAdmin','1');   
  2. require("../class/connect.php");   
  3. require("../class/db_sql.php");   
  4. require("../class/functions.php");   
  5. requireLoadLang("pub/fun.php");   
  6. require("../data/dbcache/class.php");   
  7. $link=db_connect();   
  8. $empire=newmysqlquery();   
  9. $editor=1;   
  10. //验证用户 
  11. $lur=is_login();   
  12. $logininid=$lur['userid'];   
  13. $loginin=$lur['username'];   
  14. $loginrnd=$lur['rnd'];   
  15. $loginlevel=$lur['groupid'];   
  16. $loginadminstyleid=$lur['adminstyleid'];   
  17. $classid=(int)$_GET['classid'];   
  18. $id=(int)$_GET['id'];   
  19. $title=AddAddsData($_GET['title']);   
  20. $where='';   
  21. if($id)   
  22. {   
  23. $where=' and id<>'.$id;   
  24. }   
  25. //已审核 
  26. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where title='".addslashes($title)."'".$where." limit 1");   
  27. //未审核 
  28. if(emptyempty($num))   
  29. {   
  30. $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$class_r[$classid][tbname]."_check where title='".addslashes($title)."'".$where." limit 1");   
  31. }   
  32. echojson_encode($num); 
上面是采用post查询返回json结果的方式来实现查重,我们还可以通过get方式,js函数如下:
  1. <script type="text/javascript">   
  2. functioncheckTitle()  
  3. {   
  4. varclassid='<?=$_GET[classid]?>';   
  5. varid='<?=$_GET[id]?>';   
  6. vartit=document.add.title.value;   
  7. varanswerurl='ReTitleAjax.php';   
  8. $.get(answerurl+"?classid="+classid+'<?=$ecms_hashur['ehref']?>&title='+tit, function(data){   
  9. if(data){   
  10. if(data==1){   
  11. $("#titletips").html("<font color='red'>已经存在此名称,请检查是否已经添加过</font>");   
  12. }   
  13. else{   
  14. $("#titletips").html("<font color='green'>可以添加信息</font>");   
  15. }   
  16. returnfalse;   
  17. }   
  18. else{   
  19. $("#titletips").html("<font color='red'>检测失败,请重试</font>");   
  20. }   
  21. });      
  22. }   
  23. </script> 
接着在title字段的input后放一个容器用于存储提示信息,例如<span id="titletips"></span>,还可以通过在出现重复时禁用其他input输入等方式来限制,这里只是给出原理,大家可在此基础上发挥。

【审核人:站长】

收藏   加好友   生成海报   分享
点赞(0)
打赏
Tags: 二次开发 帝国CMS
评论(0人参与,0条评论) 雨祺
0/0
  • 请先说点什么
    最新评论

    发布者资料

    热门文章

    技术文摘

    查看更多技术文摘
    首页
    栏目
    搜索
    会员
    投稿