代码如下
/**--------------------
* - 表单元素值自动选择
* --------------------
* @param name 表单元素name值
* @param value 想要该表单元素自动选择的数据值
* @author Talent 2016-11-22
**/
function setInputSelected(name,value){
var input = $("[name='" + name + "']");
var inputFirst = input.first();
if (inputFirst.is(":radio")) {
input.filter("[value=" + value + "]").prop("checked", true);
} else if (inputFirst.is(":checkbox")) {
input.prop("checked", false);
$(value).each(function() {
input.filter("[value=" + this + "]").prop("checked", true);
});
} else {
input.val(value);
}
}
应用场景
一般多为PHP系统的信息修改页面,页面中的checkbox、radio、select,需要根据得到的当前数据的一些值来让他们自动选择上;如下图
这个页面有N个select和一个radio,所以从数据库获取信息后调用上面的方法传值使他们自动选择;如下在页面底部一次传name调用。
<script type="text/javascript">
setInputSelected("pid", "{$data.pid|default=0}");
setInputSelected("is_menu", "{$data.is_menu|default=0}");
setInputSelected("is_dev", "{$data.is_dev|default=0}");
setInputSelected("status", "{$data.status|default=0}");
</script>
产生的问题:
页面中有多个元素需要自动选择的时候,有多少setInputSelected就要调用多少次,能否改进成一次调用,搞定所有呢;比如我传name和value的数组进去。
抛开问题1,上面的代码还有没有优化空间。
PS:感谢各位大神指教,最近在SF学到了好多东西。