【问题标题】:How can show pop when user typing using javascript?用户使用 javascript 输入时如何显示弹出窗口?
【发布时间】:2014-08-09 07:03:28
【问题描述】:

我想创建一个功能,用于在用户在字段中输入内容时显示弹出或状态,我想在不提交表单的情况下执行此操作,我尝试了以下功能,但它无法正常工作,谁能告诉我问题出在哪里.. ........?

Javascript

<script type="text/javascript">
document.getElementById('confirm').addEventListener('change', checkFile, false);
approveletter.addEventListener('change', checkFile, false);

function checkFile(e) {
        if ($('#confirm').val().length > 0) {

            alert("txt");
        }
    }
</script>

HTML

<input type="text" name="text" id="confirm">

【问题讨论】:

    标签: javascript jquery function validation


    【解决方案1】:

    只听onkeyuponkeydown 事件。我包含了一个可能有帮助的 jsfiddle。

    jsfiddle

    【讨论】:

    • 看看这个。 jsfiddle.net/ec0oka1o。现在,即使您输入 textbox1,“编辑”也只会突出显示一个函数实例。您能告诉我如何隔离这些或有多个“更改”功能实例吗?我的意思是每个文本框都有一个新的变化函数实例,独立于其他实例。
    • @mario23:您希望使用 jQuery 还是纯 JavaScript 编写解决方案?
    • @Luka 我想用纯 JS 来做,但使用 jquery 也很好,因为我已经在用它来 POST。实际上,我在 JS 中尝试过,但只创建了一个实例,该实例适用于一个文本框,但不适用于其他文本框。
    【解决方案2】:

    编辑 - 最新更新

    好的,我知道你从 Vivek 那里得到了你的小提琴,但你可能也对此感兴趣。现在我完全了解了您想要实现的目标,这里有一个简短的描述。最佳做法是将 JavaScript 从 HTML 中分离出来,并尽可能避免将 JavaScript 放入 HTML headbody

    所以,首先创建三个文件:Test.jsExample.htmlTest.css。当然,您还需要 jQuery 文件,您只需将其包含在头部中即可。在Example.html 中输入以下代码:

    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="Test.css"/>
            <script type="text/javascript" src="jQuery.js"></script>
            <script type="text/javascript" src="Test.js"></script>
        </head>
    <body>
        <input type="text" id="test"/><span id="popup"></span>
    </body>
    </html>
    

    Test.css 中为弹出的 span 元素添加一些样式(如果您想要固定高度和宽度,添加阴影等,也可以使用除法元素并根据自己的喜好设置样式):

    #popup {
    
        background-color: red;
        color: white;
        display: none;
    
    }
    

    最后,将以下 JavaScript 代码放入 Test.js

    $(document).ready( function() {
    
        $("#test").keyup( function() {
    
            if($("#test").val().length>5) {
    
                $("#popup").fadeIn();
                $("#popup").html("Invalid length. Maximum is 5.");
    
            }
            else {
    
                $("#popup").fadeOut();
    
            }
    
        });
    
    });
    

    通过将 JavaScript、CSS 和 HTML 划分为单独的文件,您可以获得更整洁的 HTML,并将样式和客户端逻辑与标记分开。

    旧答案

    将代码封装在$(document).ready()中。

    像这样:

    $(document).ready(function() {
    
        document.getElementById('confirm').addEventListener('change', checkFile, false);
        approveletter.addEventListener('change', checkFile, false);
    
    });
    
    function checkFile(e) {
    
        if ($('#confirm').val().length > 0) {
    
            alert("txt");
    
        }
    }
    

    另外,addEventListener 在 IE8 及更低版本中不可用。您可以使用onchange 事件,如下所示:

    $(document).ready(function() {
    
        document.getElementById("confirm").onchange = checkFile;
    
    });
    

    对于 IE8 和更早的版本,有一个类似的方法称为 attachEvent。如果使用attachEvent 方法,它看起来像下面这样:

    $(document).ready(function() {
    
        document.getElementById('confirm').attachEvent('change', checkFile);
        approveletter.attachEvent('change', checkFile);
    
    });
    

    您也可以按照 Protron 在 cmets 中的建议使用 jQuery.change()

    $(document).ready(function() {
    
        $("#confirm").change(function() {
    
            if ($('#confirm').val().length > 0) {
    
                alert("txt");
    
            }
    
        });
    
    });
    

    当然,没有经典的警报弹出窗口也可以做到这一点。您可以使用 display:none 创建自己的 HTML 分割元素,并在必要时显示它。如果您也需要相关说明,请在 cmets 中给我发一个便条。

    【讨论】:

    • 当我点击网页时它可以工作,这可能没有点击它的警报。
    • 我正在为你写一个小教程。上线后我会通知你的。
    • 好的,我等着
    • @AyazShah:我看到你已经掌握了你的小提琴,这也可能有用。
    【解决方案3】:

    使用此功能,您无需点击网页。

    <input type="text" name="text" id="confirm"><br /><br />
    <span id="status" ></span>
    
    <script type="text/javascript">
    $('#confirm').keyup(function () {
            if ($('#confirm').val().length > 0) {
                $('#status').html("Text entered");
            }
            else
            {
                $('#status').html("Text removed");
            }
        }
    )
    </script>
    

    【讨论】:

    • 你能提供给我 Jsfiddle..吗?
    猜你喜欢
    • 2021-09-26
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2012-01-29
    • 2015-06-17
    相关资源
    最近更新 更多