转化一下解决问题的思路,弯道超车

遇到一个数字密码的问题。
用户点击密码input框,多次点击会触发奇怪的定位问题。
我的思路是获取点击事件,然后进行处理。

搜索了半天,什么onclick,onchange,onfocus,onkeyup...都试了,都不行!
气的都想把电脑砸了!

后来想了一下索性不让用户去乱点击,而是通过统一的获取焦点。

使用遮罩层,把input框挡住。

效果还不错。

.mask {
    position: absolute; top: 0px; filter: alpha(opacity=60); background-color: #f6fff1;
    z-index: 1002; left: 0px;
    opacity:0.1; -moz-opacity:0.1;
}
<div class="aui-row number-password" style="padding:2rem 0.2rem;" onclick="focusPwd();">

    <div id="pwd_area" class="aui-col-xs-12">
        <div id="mask" class="mask"></div>
        <input class="put" id="number-password-input" type="tel" maxlength="12" tabindex="6"
                               onkeyup="dealKeyup(this);" >
    </div>
</div>
function showMask(){
    $("#mask").css("height",$('#pwd_area').height());
    $("#mask").css("width",$('#pwd_area').width());
    $("#mask").show();
}


    
function focusPwd() {
    $('#number-password-input').focus();
}

遮罩层刚好挡住input框,跟input框重合。不影响其他的空间使用。

点击input框外的地方,使用input获取聚焦事件。

这样就不会出现用户乱点击,乱聚焦的问题了。

转换解决问题的思路,弯道超车。

posted @ 2017-06-06 10:11  TBHacker  阅读(246)  评论(0编辑  收藏  举报