几天前,我接触到一个二次开发。后台UI使用layi框架,可以在程序的原始标记设置中自由输入。我想改成单选。这种功能的使用方式,一个产品属于两个类别。第一个是系统的产品分类,第二个是通过标签实现的。但是,一个产品不需要同时属于两个以上的标签,所以二次开发被修改为单个无线电而不是多个复选框。
但是,本文中选择状态的动态设置与单选和多选相同。
在前端模板文件中,普通用到的是使用<if condition=””></if>来作判断。但奇怪的是, layui认不出它。
首次尝试:
<input class='layui-input' type='radio' name='tag' title='正常' value='正常' <if condition="">checked</if>></pre> 发现在input包括中无法进行解析到if判断一个语句;当然在我们普通一般情况下是可以的,中不过这些程序使用了layui,因为layui通过js识别系统所有信息表单设计元素,重新编译了。所以在js的重新进行编译中无法通过识别企业原本不属于表无素材的标签。 第二次尝试:
<if condition=""> <input class='layui-input' type='radio' name='tag' title='正常' value='正常' checked> <else/> <input class='layui-input' type='radio' name='tag' title='正常' value='正常'> </if> 上面的代码确定可以选择状态,但是还有其他问题,选择的和未选择的都会显示。为什么? 原因是layui遍历表单中的表单元素,由于if语句的存在,不会做出最终的结果。相反,标识两个输入。 第三次尝试,没有收音机,没有收音机,没有收音机,没有收音机?下拉单个项目也可以,使用<Select>再次测试。同样会出现以上两个问题。 没有办法求助神奇的百度给出这样的结果;
$("input[name=tag][value=正常]").prop("checked","true"); form.render(); prop()方法设置或返回所选元素的属性和值。 当使用此方法返回属性值时,将返回第一个匹配元素的值。 当方法用于设置属性值时,将为匹配元素的集合设置一个或多个属性/值对。 Render()是再次呈现对象; 看到这里很多朋友以为问题研究已经可以得到有效解决了,其实这些问题才刚刚开始。不是一个提示form对象企业找不到,就是通过提示form中找不到render()方法。为什么,整个程序不是doem,还集成了很多其他的框架和插件,没有官方的那么直接。
form.render(); $form.render(); form().render(); .layui.form().render(); ……
我什么都试过了,但都不管用,这东西就是这样。累了就休息一下。 一觉睡醒,阔然开朗。先来分析看看学生完成后的代码。
thistag="{$info.tag}";//读后台数据值 var mytag=new Array("无","第一项","第二项","第三项","第四项","第五项");//所有单选项目 cntag=""; for(j = 0,len=mytag.length; j < len; j++) { //遍历数组 if(thistag==mytag[j]){ //判断是否选中 cntag+="<input class=\'layui-input\' type=\'radio\' name=\'tag\' id=\'tag\' title=\'"+newtit+"\' value=\'"+mytag[j]+"\' checked>"; }else{ cntag+="<input class=\'layui-input\' type=\'radio\' name=\'tag\' id=\'tag\' title=\'"+newtit+"\' value=\'"+mytag[j]+"\' >"; } } $("#cntag").html(cntag); //打印到网页中显示最终效果
优点:只读一次背面数据; 简化:就算单选项进行很多,只需写在自己一个数据数组中即可。 简单:只要写一次判断陈述; 因为原则是前端,所以多使用js,少使用php后端定义的标签。 我不知道如何使用格式嵌套代码,否则代码看起来会更好。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 源码仓库网