【问题标题】:jQuery - How to dynamically hide submit button when you delete e-mail at input field?jQuery - 在输入字段中删除电子邮件时如何动态隐藏提交按钮?
【发布时间】:2012-02-29 18:24:24
【问题描述】:

当您键入有效的电子邮件时请注意...然后删除此电子邮件并且它不会隐藏提交按钮。有一个jsFiddle:

http://jsfiddle.net/BGNsS/

谁能帮帮我?

谢谢!

【问题讨论】:

    标签: jquery forms dynamic input


    【解决方案1】:

    检查有效的正则表达式和长度。您的正则表达式对空字段成功。

    你在这里检查 jQuery 元素集合的长度

    if(!$("#sForm input#write").length > 0) $("input#sub").hide();
    

    但是你必须检查值的长度

    detectEmail.length == 0
    

    Updated jsFiddle

    $('input#sub').hide();
    
    $('input').keyup(function() {
        $('span.attention').hide();
    
        var detectEmail = $(this).val();
        var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    
        if(detectEmail.length == 0 || !emailRegex.test(detectEmail)) 
        {
            $('#sub').hide();
            $(this).after('<span class="attention">Writing valid e-mail...</span>');
        }
        else 
        {
            $('#sub').show();
        }
    });
    

    【讨论】:

    • if ( detectEmail.length == 0 || !emailRegex.test(detectEmail) ) - 首先检查长度将避免执行正则表达式,我猜什么都没有。
    • @DidierGhys 好主意,我更新了我的答案。你明白为什么有人不赞成我的回答吗?
    • 太棒了,我对 == 不太了解,所以它很有魅力,谢谢!
    • 很高兴为您提供帮助!祝你有美好的一天!
    【解决方案2】:

    检查空字符串实际上是错误的。

    这个返回元素的数量(总是1):

    $("#sForm input#write").length
    

    改成这样的

    $("#sForm input#write").val().length
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2013-01-09
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多