织梦dedecms 自定义表单验证字段不能为空,不是通过前台页面js验证,绝对灵活实用。
模板文件的修改:
1、修改diy_field_add.htm,23行左右添加代码
var necessary = theform.necessary[0].checked?theform.necessary[0].value:theform.necessary[1].value;
替换字符串,大概在38行
替换revalue = "<field:"+fieldname+" itemname=\""+itemname+"\" autofield=\"1\" type=\""+dtype+"\" isnull=\""+sisnull+"\" default=\""+vdefault+"\" ";
为revalue = "<field:"+fieldname+" itemname=\""+itemname+"\" autofield=\"1\" type=\""+dtype+"\" isnull=\""+sisnull+"\" necessary=\""+necessary+"\" default=\""+vdefault+"\" ";
2、diy_field_add.htm,大概124行</tr>后面,添加代码
<tr>
<td bgcolor="#FFFFFF">
<strong>是否为必填项:</strong><br/>
<span class="STYLE2">防止恶意提交表单</span>
</td>
<td bgcolor="#FFFFFF">
<input name="necessary" type="radio" value="true" class='np' checked='1' />
是
<input name="necessary" type="radio" value="false" class='np' />
否
</td>
</tr>
3、修改diy_field_edit.htm,18行左右添加代码
var necessary = theform.necessary[0].checked?theform.necessary[0].value:theform.necessary[1].value;
替换字符串,大概在38行
替换revalue += " isnull=\""+sisnull+"\" default=\""+vdefault+"\" ";
为revalue += " isnull=\""+sisnull+"\" necessary=\""+necessary+"\" default=\""+vdefault+"\" ";
4、diy_field_edit.htm,大概139行</tr>后面添加代码
<tr>
<td bgcolor="#FFFFFF"><strong>是否为必填项:</strong><br/>
<span class="STYLE2">防止恶意提交表单</span></td>
<td bgcolor="#FFFFFF">
<input name="necessary" type="radio" value="true"<?php if($ctag->GetAtt('necessary')=='true') echo " checked='1' "; ?> class='np' />
是
<input name="necessary" type="radio" value="false"<?php if($ctag->GetAtt('necessary')=='false'||$ctag->GetAtt('necessary')=='') echo " checked='1' "; ?> class='np' />
否 </td>
</tr>
5、表单提交处理:
修改plus/diy.php文件
找到$addvar = $addvalue = '';在上面添加代码
//验证必填字段
$row = $dsql->GetOne("SELECT * FROM `dede_diyforms` WHERE `table`='{$diy->table}'");
$fieldset = $row['info'];
require_once(DEDEINC."/dedetag.class.php");
$dtp = new DedeTagParse();
$dtp->SetNameSpace("field","<",">");
$dtp->LoadSource($fieldset);
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $tagid=>$ctag)
{
if($ctag->GetAttribute("necessary")=='true' && empty(${$ctag->GetName()}))
{
showmsg($ctag->GetAttribute("itemname")."不能为空!", -1);
exit;
}
}
}