Destoon发布信息标题重复判断 AJAX发布信息时即判断是否重复
先说个题外话,之前说的又重归技术行业了,这几天一直在研究Destoon B2B系统,公司里面做站用的这个,主管想要整个重复标题检测的,无论什么形式的都可以,由于之前用科讯CMS整过标题重复检测的;这个对于我来说应该i问题,可偏偏问题是这个Dt系统没接触过,这就纠结了.好了,最终还是研究出来,如下:
以【供应信息】为例,首先在模板页“my_sell.htm”中信息标题增加代码 结果如下:
1 |
<input name="post[title]" type="text" id="title" size="50" value="{$title}" onBlur="out_Titles();" onFocus="on_input('dtitle');" onKeyUp="out_Titles();"/> |
为了更好的让其它栏目同样可以用到这个文件来做标题重复的一个判断,特在模板中增加一个文件my_ajax.htm代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<style type="text/css"> .d_on{ color:#F00} .d_ok{ color:#00F} .d_err{ color:#F00} </style> <script type="text/javascript"> function on_input(objname){ var strtxt; var obj=document.getElementById(objname); obj.className="d_on"; // alert(objname); switch (objname){ case "dtitle": strtxt='写好【信息标题】,让排名更靠前!'; break; } obj.innerHTML=strtxt; } function out_Titles(){ var obj=document.getElementById("dtitle"); var str=sl(document.getElementById("title").value); var buttonObject=document.getElementById('tijiao'); var chk=true; if (str<3 || str>2000){chk=false;} $.ajax({type:"get",url:"My_Ajax.php?action=checktitle&m={$mid}&t="+escape(document.getElementById("title").value)+"&anticache=" + Math.floor(Math.random()*1000),cache:false,dataType:"html",success:function(d){ var s=unescape(d); ajaxchk=s.split('|')[0]; ajaxstr=s.split('|')[1]; } }); if (ajaxstr!=null){ if (ajaxchk=='ok'){ obj.className="d_ok"; obj.innerHTML=ajaxstr; buttonObject.disabled=false; }else{ obj.className="d_err"; obj.innerHTML=ajaxstr; buttonObject.disabled=true; // alert("标题重复,请重写标题!"); } } } function sl(st){ sl1=st.length; strLen=0; for(i=0;i<sl1;i++){ if(st.charCodeAt(i)>255) strLen+=2; else strLen++; } return strLen; } </script> |
最后就是文中提到的那个My_Ajax.php文件了,增加文件member/My_Ajax.php用于判断检测 传值的话自己做设置,其中M值为栏目值,具体可以查看下,比如供应的为5,下面将主要的代码贴出来(为了网站安全赞不全贴出来,安全自己设置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
switch($mid){ case 5: //供应 $row = $db->get_one("SELECT title FROM {$DT_PRE}sell_5 WHERE title='$title'"); break; case 6: //求购 $row = $db->get_one("SELECT title FROM {$DT_PRE}buy_6 WHERE title='$title'"); break; case 7: //行情 $row = $db->get_one("SELECT title FROM {$DT_PRE}quote WHERE title='$title'"); break; case 8: //展会 $row = $db->get_one("SELECT title FROM {$DT_PRE}exhibit WHERE title='$title'"); break; case 9: //招聘、简历 $row = $db->get_one("SELECT title FROM {$DT_PRE}job WHERE title='$title'"); break; case 21: //资讯 $row = $db->get_one("SELECT title FROM {$DT_PRE}article_21 WHERE title='$title'"); break; case 22: //招商 $row = $db->get_one("SELECT title FROM {$DT_PRE}info_22 WHERE title='$title'"); break; } if(is_array($row)){ echo "err|您发布的信息已被发布,请改名!"; } else{ echo "ok|恭喜,没有发现重复的标题信息,可以放心发布!"; } |
这样一个很方便实用的AJAX判断标题重复的就搞定了,如果看官有更好的实现方法,可留言告知,共同研究!