form.on('checkbox(chkAll)' 出现错误提示 s.parent

提问 已结
19 190
dailng
dailng 2017-9-14
悬赏:10飞吻
版本:layui-v2.1.3
js代码:

html:<input name="" id="checkAll" lay-skin="primary" type="checkbox" lay-filter="chkAll">
浏览器:Firefox 55.0.3(32位)
错误提示:TypeError: s.parents is not a function layer.js:2:5924
回帖
  • 我知道原因了。。。你是弹出data.elem,这个是个dom对象
    layer.msg(data.elem.checked); //是否被选中,true或者false
    layer.msg(data.value); //复选框value值,也可以通过data.elem.value得到
    layer.msg(data.othis); //得到美化后的DOM对象
    这样应该都是没问题的,layer.msg要传入字符串或者html
    0 回复
  • layui.use(['form','layer'],function(){
    })
    0 回复
  • dailng
    2017-9-14
    @小胖237
    不是这个问题,就是form组件的事件监听的问题

    改了之后还是这样。
    0 回复
  • 我2.1.3,Firefox 55.0.3(32位),正常
    0 回复
  • dailng
    2017-9-14
    @小胖237
    问下你的jquery版本呢?或者说我这样的html结构有问题?我就算单独写一个demo页也还是提示这样。

    点击复选框时提示这个:
    0 回复
  • @dailng jq的js要放在layui.js前面吧- -
    0 回复
  • 把jquery干掉吧,然后可以直接弹出layer.msg('xxx')试试,不需要放到form的事件里面
    0 回复
  • @dailng 我没有单独再引入jquery,layui内置了
    0 回复
  • dailng
    2017-9-14
    @叔到用时方恨少
    在form.on上一行加入:layer.msg("123"); 是能弹出的。
    0 回复
  • dailng
    2017-9-14
    @随❤所☆预
    layer并不是基于jquery的一个js包。前面后面并不影响。
    0 回复
  • dailng
    2017-9-14
    这里贴上demo代码。
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="Script/jquery-1.10.2.min.js"></script>
    <link href="Script/layui/css/layui.css" rel="stylesheet" />
    <script src="Script/layui/layui.js"></script>
    <script type="text/javascript">
    layui.use(['form', 'layer'], function () {
    var form = layui.form
    , layer = layui.layer;
    layer.msg("123");
    form.on('checkbox(chkAll)', function (data) {
    layer.msg(data.elem); //得到checkbox原始DOM对象
    });
    });
    </script>
    </head>
    <body>
    <div class="layui-form">
    <div class="layui-form-item">
    <div class="layui-input-block">
    <input id="chk" type="checkbox" name="like[write]" title="写作" lay-filter="chkAll" />
    </div>
    </div>
    </div>
    </body>
    </html>
    0 回复
  • 额。。。有点难猜,这样吧,把js移到</body>之前,不要放在头部
    0 回复
  • @dailng layer肯定是基于jquery的,但是,layui内部自带jquery而已
    0 回复
  • dailng
    2017-9-14
    @小胖237 这真是个悲伤的故事,我把jiquery删了也还是报这个错,你能不能帮忙把上面代码复制出来再你那看看会不会报错。
    0 回复
  • @dailng 可以,我试一下
    0 回复
  • dailng
    2017-9-14
    @叔到用时方恨少 放到</body>之前也是一样的。你这边测试是正常的么?
    0 回复
  • dailng
    2017-9-14
    @叔到用时方恨少 谢谢,就是这个问题。还没去看data这块的说明。
    0 回复
  • dailng
    2017-9-14
    谢谢上面两位同仁的帮助,自己失误[黑线]
    0 回复
  • @dailng

    layer.msg(data.elem.checked);
    layer.msg(data.value);

    这个可以,但data.elem是原始DOM对象,无法用layer.msg弹出
    0 回复