【问题标题】:RegEx not working with my jQueryRegEx 不适用于我的 jQuery
【发布时间】:2014-07-13 23:31:02
【问题描述】:

谁能帮帮我,我想在用户使用 jquery 进行无效输入时显示错误。
如果输入为空,它可以工作,但不适用于 RegEx。

这里是html代码:

<div class="error" style="padding:5px 10px;background-color:yellow;border:1px solid red;border-radius:5px;display:none"></div>


  <input type="text" name="nama">
  <input type="submit" name="submit" value="Cek">


这里是 jQuery

  $(document).ready(function () {
        var justChar = /^[a-zA-Z]+$/;
        $('input[name="submit"]').click(function () {
            if ($('input[name="nama"]').val() === "") {

                $('.error').html('<ol></ol>');
                if ($('input[name="nama"]').val() === "") {
                    $('.error ol').append("<li>Name Must Be Require</li>");
                } else if (!justChar.test($('input[name="nama"]').val())) {
                    $('.error ol').append("<li>Name Must Be Character</li>");
                }

                $('.error').slideDown('slow');
                return false;
            }
            return true;

        });

    });

我已经写信给jsfiddle

【问题讨论】:

  • 如果它不为空,那么您的内部条件检查甚至都不会进行。见外部检查 - if ($('input[name="nama"]').val() === "") {

标签: javascript jquery regex forms validation


【解决方案1】:

如果要分析输入值,请删除父条件if ($('input[name="nama"]').val() === ""),因为这是废话。

为了匹配正则表达式,请使用 jQuery 样式方法:$('input[name="nama"]').val().match(justChar);

【讨论】:

  • 谢谢,哇,我没有看到你是第一个回答的。我为此给了你一个 +1
  • 谢谢你,谢谢你提出的增值建议:)
  • 你的意思是这样的? $('input[name="submit"]').click(function () { $('input[name="nama"]').val().match(justChar); });那么我必须在哪里编写代码以显示错误类型? @prash
  • 不,我们没有这么说。我们说过要替换你调用正则表达式匹配的方式。请参阅我对演示代码的更新答案。当您实际上没有错误时,还更新了隐藏错误
  • 那条愚蠢的评论是什么意思?它是经过测试的代码。您已经接受了答案!用 jsfiddle 链接编辑。学会尊重并先尝试
【解决方案2】:

您的正则表达式检查放错了位置,它处于if ($('input[name="nama"]').val() === "") 条件下,因此永远不会检查正则表达式

我得到了这个工作:

$(document).ready(function(){
    var justChar = /^[a-zA-Z]+$/;
    $('input[name="submit"]').click(function(){    
        if($('input[name="nama"]').val() === "") {
            $('.error').html('<ol></ol>');
            $('.error ol').append("<li>Name Must Be Require</li>"); 
            $('.error').slideDown('slow');
            return false;
        } else if(!justChar.test($('input[name="nama"]').val())) {
            $('.error').html('<ol></ol>');
            $('.error ol').append("<li>Name Must Be Character</li>"); 
            $('.error').slideDown('slow'); 
            return false;
        } else {
            return true;
        }
    });
});

【讨论】:

  • 没注意到你的组织方式,+1
【解决方案3】:

只有当值为空时才会检查您的内部条件。 如果它不为空,那么您的内部条件检查甚至都不会进行。见外部检查 -

 if ($('input[name="nama"]').val() === "") {

更新:另外,最好按照@Valentin Mercier 的建议使用 JQuery 匹配。这个不错

删除以上行,您的错误就会正确显示

编辑:

显示修改后的代码以使 OP 更清楚

$(document).ready(function () {
    var justChar = /^[a-zA-Z]+$/;
    $('input[name="submit"]').click(function () {
            if ($('input[name="nama"]').val() === "") {
                $('.error').html('<ol></ol>');
                $('.error ol').append("<li>Name Must Be Require</li>");
                $('.error').slideDown('slow');
                return false;
            } else if (!$('input[name="nama"]').val().match(justChar)) {
                $('.error').html('<ol></ol>');
                $('.error ol').append("<li>Name Must Be Character</li>");
                $('.error').slideDown('slow');
                return false;
            } else {
               $('.error').hide();
               return true;
            }
    });
});

编辑:作为 OP 共享 jsfiddle 仍然不知道! .希望对您有所帮助!

http://jsfiddle.net/PrasanthSudarsanan/tLmD7/2/

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多