遇到的bug
在layer弹窗的content中绑定一段div代码,其中存在input,在input标签内部添加了一个oninput事件,如下图,在input中输入数字后,再点击左侧导航栏的其他链接,会打开一个新窗口显示而不在后台管理的mian框中显示
点击链接后打开一个新的窗口
html
<div id="motaikunag" style="display: none;">
<div class="layui-tab-item layui-show">
<div class="layui-col-md9">
<div class="layui-form-item">
<label class="layui-form-label" style="width:120px;">手机或邮箱</label>
<div class="layui-input-block">
<input type="text" name="name" id="name" value="" placeholder="请输入手机号或者邮箱号" maxlength="30" oninput="getname()" autocomplete="off" class="layui-input">
</div>
</div>
</div>
</div>
</div>
layer的js
$('#tianjia').on('click', function() {
$('.attr-tan').prop('hidden', true);
$('.st_id').prop('hidden', true);
layer.open({
type: 1, //类型
area: '80%', //定义宽和高
title: '添加订单', //题目
shadeClose: false, //点击遮罩层关闭
content: $('#motaikunag'), //打开的内容
moveOut: true,
btn: ['关闭'],
btn2: function() {
layer.closeAll();
}
});
});
解决办法
不要在标签内部写事件,在js里面写
以下代码是写在layui.use内层
$('#name').on('input', function(e){
$('.st_id').prop('hidden', true);
if (e.delegateTarget.value.length == 11) {
if (!(/^1[3456789]\d{9}$/.test(e.delegateTarget.value))) {
$('.attr-tan').prop('hidden', true);
return false;
}
以上注意,必须使用e中的属性来进行判断,不能对e赋值给另一个变量然后判断,会报错,除此之外还可以用jq(这里一定要用立即执行函数才可以)
以下代码写在layui.use外层
$(function(){
$('#name').bind('input propertychange', function() {
$('.st_id').prop('hidden', true);
if ($(this).val().length == 11) {
if (!(/^1[3456789]\d{9}$/.test($(this).val()))) {
$('.attr-tan').prop('hidden', true);
return false;
}
注:代码并不完全,只是展示解决思路