javascript - 警报栏而不是警报框

标签 javascript html css

我现在有一个脚本可以防止用户在我的表单的州字段中输入州缩写以外的任何内容。感谢gideon

我稍微修改了脚本以在进入无效状态时包含一条警告消息。但我真的不喜欢它。我想要一个在页面顶部或字段正下方闪烁的警告栏。输入错误的缩写时会自动出现并闪烁以引起用户注意并在几秒钟后消失的东西。欢迎任何想法或想法!我非常愿意接受建议!再次感谢!

我开始觉得你们不理解我。这是我的代码:

<script>
                        function validateState(el) {
                        //put all states in this array. 
                        var states =    ["AK","AL","AR","AS","AZ","CA","CO","CT","DC","DE",
                    "FL","GA","GU","HI","IA",
                    "ID","IL","IN","KS","KY","LA","MA","MD","ME","MH","MI","MN","MO","MS","MT",
                    "NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","PR","PW","RI",
                    "SC","SD","TN","TX","UT","VA","VI","VT","WA","WI","WV","WY"];
                        for(var i=0;i< states.length;i++) {
                          if(el.value.toUpperCase() == states[i]) {
                            return true;
                          }
                        }
                        //clear element if it doesn't match a state
                        el.value = ""; //you could maybe do something else here.
                        alert('Invalid State Abbreviation, You must fix this before continuing')
                        document.getElementById("state").focus();
                        return false;
                    }
                    </script>

如果语句返回 false,我希望在屏幕上显示一个栏。

最佳答案

您可以简单地创建一个位于用户 View 上方的元素(顶部:-100px 等)。一旦进入无效状态,您可以使用 jQuery 之类的库将其设置为顶部位置 0 的动画。您可以使用 setInterval() 中的简单条件语句使其闪烁;

我不确定您是否想使用 jQuery,但如果您这样做,您的代码将如下所示:

//if the input is not what you expect..
if(input != state){
    //drop the bar down
    $("#bar").animate({
            top: 0
    }, 1500);//drop it in 1500 milliseconds.
    //this is a lot like a loop that runs every 400 milliseconds.. 
    setInterval(function () {  <-------------------------------| 
        if ($("#bar").css("display") == 'none') {              |
            //if the bar is HIDDEN show it..                   |
            $("#bar").show();                                  |  
        } else {                                               | 
            //else hide it.                                    | 
            $("#bar").hide();                                  |
        }                                                      |
    }, 400);//<< EVERY 400 milli-seconds go here >-------------^
}

当然这只是一个示例,可以很容易地转换回传统的 JavaScript。

查看 jsFiddle .

希望这就是您要找的。

关于javascript - 警报栏而不是警报框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679838/

相关文章:

html - 在 Material-UI 中调暗/禁用 div 的最佳方法?

javascript - setValue to QUERY() 公式不起作用?

javascript - 如何使用 jQuery 访问父元素属性?

javascript - 在 K、Lacs、Crore 中格式化数字

javascript - 为 iFrame 创建 float 水平滚动条

c# - 我是否在我的一个页面中滥用了 WebMatrix 的 AntiForgery.Validate 助手?

javascript - 需要更改 slider 的宽度和高度,但图像重叠

javascript - AngularJs $q promise 与 async/await 兼容吗?

javascript - 如何模拟点击&lt;input type ="image"/>?

html - 如何在避免 FOMI 的同时在外部 CDN 上缓存 SVG 图标?