关于新版本的表单“初始赋值”功能

讨论 已结
21 1538
岁月小偷
悬赏:50飞吻
终于等来了新版本,然而比较相中的就两个一个打分的控件,另一个是form.val()。不知道大家的期待满足了没哈,期待正式版。

回到标题的讨论内容,不知道大家使用了没有,有没有觉得怪异的地方。我是比较期待这个功能的,以为目前表单都是在有数据或者默认为空(修改和新增)的时候利用模板引擎渲染出来的,一直期待有一个我可以不管数据是什么先把dom生成出来放在那里,然后可以初始化的功能,也比较懒一直没有实现。官方出来了第一时间是是兴奋和怀疑,这个真的是初始化么。好吧体验了一下~~我建议赶紧该名称吧,这个叫表单更新,不叫初始化。初始化就我的理解来说是默认值原来的值,比如修改一个user,对应过来user原来有的属性的值,显示没问题,但是reset呢?下面有个重置按钮,点击重置,刷出来的结果应该是啥,应该心里都有预期的,是不是一致可以到官方的在线演示体验一下吧。
http://www.layui.com/demo/form.html
回帖
  • 贤心
    贤心 (管理员)
    2018-5-8
    layui 能做的初始化只能是这个,这种情况可以把重置按钮去掉,应该问题不大。
    而至于您说的点重置不应该把值清空,那只能在表单元素输出在页面之前,就直接把 value 赋值好。
    0 回复
  • 1 回复
  • @贤心 恩恩,就看怎么理解怎么使用了。这个方法是一个很实用的方法。估计也只有我比较钻牛角尖[嘻嘻] ,因为一个概念性的词给人的理解都是不一样的,比如这个form.val()要是叫form表单元素赋值,而不是初始赋值,那么就不会对它的作用有理解偏差,“初始赋值”这个词给人就感觉是两层意思,初始+赋值,联想到的是经过这个方法初始赋值(通过某些机制)之后,修改了某些数据项,修改途中途如果想回到初始赋值的状态,可以reset回去。(重置按钮的效果是我刚接触layui之后觉得很神奇很厉害的功能之一,舍不得不要哈[哈哈] )。当然也可以加reset的监听然后通过form.val()的方式来实现,但是前提是初始的值还得自己保存起来,有点脱离了整体了。语言组织能力不好,说了一堆可能没什么用的话哈,感谢您这么忙还有时间来看我们的帖子哈,期待layui越来越好用。但是我还是比较坚持需要在api里面修改一下这个词,对这个词理解和实际的效果的偏差我相信我不是第一个也不是最后一个哈。
    0 回复
  • 贤心
    贤心 (管理员)
    2018-5-8
    @岁月小偷 嗯嗯,谢谢建议
    0 回复
  • 老男人
    2018-5-9
    我粘贴官网的例子,css与js也修改了路径,结果只有form.val着一个人方法报错了
    0 回复
  • 版本对了么?layui得用新版本的额,我本地试了试没问题的额,你先确认下你是不是下载引用了新版本的layui呢?如果是的话清一下缓存试试看
    0 回复
  • 老男人
    2018-5-9
    我用的是hbuild,应该是最新的版本2.3啊,下面是为我的文件目录与报错信息
    0 回复
  • 老男人
    2018-5-9
    0 回复
  • 老男人
    2018-5-9
    0 回复
  • 老男人
    2018-5-9
    @贤心 大哥,要不要加個qq帮我远程一下
    0 回复
  • 看一下控制台的layui变量中的版本是啥额,或者直接打开你引用的layui.js看看相关的信息哈,如果是新版本的应该是不会报这个错的我认为。

    0 回复
  • PHP学徒
    2018-5-11
    @老男人 这个我也遇到了,问题解决了没,求助
    0 回复
  • Z_S
    2018-5-23
    目前rc版我引入项目里用了下,发现之前的一些页面功能出bug了。是不是真能等正式版上线后才能用啊?
    0 回复
  • @Z_S 具体问题得具体分析哈,关键是什么bug还有以前的版本是多少?根据bug的情况还有版本更新的日志,定位是哪个功能的更新的影响
    0 回复

  • 我也出现这种情况,是什么原因呢?是 js 的版本问题吗?
    0 回复
  • @安迪 不会吧,你的layui版本是多少?如果是2.3.0的话就检测一下是不是代码中有写过form.val = XXX之类的代码。这样子写会直接把form.val提供的功能给干掉的,一般就是这两个原因,跟js版本没什么关系我觉得。
    0 回复
  • @岁月小偷 还没有用过 form.val()这个,我就是这样写的,报错了。
    <form class="layui-form layui-form-pane" lay-filter="example">
    </form>
    // data 为后台返回的JSON对象
    form.val('example', {
    moment_num": data.moment_num
    ,"recommend_w": data.recommend_w
    ,"recommend_m": data.recommend_m
    ,"perfect_num": data.perfect_num
    ,"wechat_w": data.wechat_w
    ,"hand_ok": data.hand_ok
    });
    0 回复
  • @安迪 额,使用之前执行过layui.use('form')了吗?
    0 回复
  • @岁月小偷 有的,有写这些
    use(['index', 'console', 'layer', 'form', 'laydate'], function() {
    var form = layui.form; ……
    0 回复
  • @安迪 这样子,那只能一个一个问题排除了
    首先是layui的版本,确定是否用的是2.3.0,如果是看下是否是浏览器缓存的原因,清了缓存再试试看;
    然后再看看form.js中有没有定义这个val方法;
    在全文搜索一下看看有没有js代码执行了form.val=之类的代码;
    如果还是找不到问题的话可以将你现在的layui还有当前的文件放到百度云上我下下来check一下。
    0 回复
  • 胡邦茂
    2018-12-12
    @安迪 大兄弟你代码少了一个符号 " ( moment_num" )
    0 回复