无法破坏Bootstrap工具提示

时间:2016-10-24 14:13:13

标签: javascript jquery twitter-bootstrap

我限制用户使用jquery在文本框中输入特殊字符。         我正在向用户显示错误消息作为bootstrap tooltip.but如果用户在文本框中输入正确的数据,我无法销毁引导工具提示。

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="style.css">
        <script src="script.js"></script>
        <link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons">
        <link href='http://fonts.googleapis.com/css?family=Roboto:400,300,300italic,500,400italic,700,700italic' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="//storage.googleapis.com/code.getmdl.io/1.0.1/material.teal-red.min.css" />
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <script src="//storage.googleapis.com/code.getmdl.io/1.0.1/material.min.js"></script>
        <script>
            var specialKeys = new Array();
            specialKeys.push(8); //Backspace
            specialKeys.push(9); //Tab
            specialKeys.push(46); //Delete
            specialKeys.push(36); //Home
            specialKeys.push(35); //End
            specialKeys.push(37); //Left
            specialKeys.push(39); //Right
            specialKeys.push(64);
            var mainelemnt;
            function IsAlphaNumeric(elment, e) {
                mainelemnt = elment;
                var keyCode = (window.event) ? e.charCode : e.keyCode;
                var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || keyCode == 64 || keyCode == 46 || keyCode == 32 || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
                if (ret == false) {
                    $(mainelemnt).tooltip('show');
                } else {
                    $(mainelemnt).tooltip('destroy');
                }
                return ret;
            }

        </script>
    </head>
    <body>
        <div id="mydiv" class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" style="margin-top:100px">
            <input class="mdl-textfield__input" type="text" id="username"  onkeypress="return IsAlphaNumeric(this, event);"  data-placement="top" data-toggle="tooltip" data-original-title="special charecters are not allowed" onblur="ValidateEmail(this)" />
            <label class="mdl-textfield__label" for="username">Username</label>
        </div>
    </body>
</html>

Plunker代码:https://plnkr.co/edit/L4Hqq15HfQgOGm2R1m80?p=preview

1 个答案:

答案 0 :(得分:0)

我认为你只是一个过于复杂的问题。当密钥发生时,我们不应该测试字符,而是测试整个字符串。

如果有人用鼠标粘贴东西怎么办?现在你可以自己分配on blur ...

$.fn.isValidAlphaNum = function () {
    return /^[a-zA-Z0-9]*$/.test($(this).val());
};

$('#username').keyup(function (e) {
    if (!$(this).isValidAlphaNum()) {
        alert('Not valid');
        //Show the tooltip
    } else {
        alert('Valid');
        //Hide the tooltip
    }
});

这是一个有效的jsFiddle