Layer 弹出 form 进行verify时用选择器获取不取值

提问 未结 4 172
panalalam
panalalam 2019-8-24
悬赏:20飞吻
版本:layui 2.4.5 浏览器:Chroms
我用Layer.open一个窗口并在content中传入一个Form 的 HTML,在做重复密码的Verify时,用选择器选择不到其它组件的值。
layer.open({
type:1
//,closeBtn: false
,shift: 2
//,shadeClose: true
,title:"新增加用户"
,area: ['700px','450px']
,content: $('#userForm').html()
});
<form>
<div class="layui-form-item" style="margin-left: 20px;margin-right: 20px;">
<label for="" class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="password" class="layui-input" placeholder="请输入密码" lay-verify="password" name="password" id='password'>
</div>
</div>
<div class="layui-form-item" style="margin-left: 20px;margin-right: 20px;">
<label for="" class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input id='compwd' type="password" class="layui-input" placeholder="请再次输入密码" lay-verify="required|compwd" name="compwd">
</div>
</div>
</form>
以上再做compwd的verify时,取不到password的值
form.verify({
password: [/^[\S]{6,12}$/,'密码必须6到12位,且不能出现空格']
,compwd: function(value){

var pass = $('#password').val();

console.log(value + " : "+ pass);

if(value != pass){
return '确认密码与密码不一致!';
}
}

});
以上form的代码在页面上运行没有问题,但一装载到Layer.open就取不到
回帖
  • 好的呢5646465
    0 回复
  • IDyun
    2019-8-24
    标签元素id 重复了,可以<script> 或拼接,或 去掉id 用name 获取输入框
    <script type="text/html" id="barDemo">
    <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
    </script>

    获取
    $("#barDemo").htlm();
    0 回复
  • panalalam
    2019-8-24
    我通过name的属性查找也找不到,[泪]
    ,compwd: function(value){

    var pass = $("input[name='password']").val();

    console.log(value + " : "+ pass);

    if(value != pass){
    return '确认密码与密码不一致!';
    }
    pass 打印出来还是空白???
    反正只要往Layer添加后,都不到值。
    0 回复
  • panalalam
    2019-8-24
    终于找到原因,原来Layer在open后,会复制多一段content:的代码,布不是调用在body外隐藏的代码,导致网页出现了两段form,一段是隐藏的,一段是被复制到<div class="layui-layer">里面。
    解决方法:增加类layui-layer中查就可以了。
    var ps = $(".layui-layer #pwd").val();
    0 回复