RegEx不与我的jQuery工作

RegEx not working with my jQuery

本文关键字:jQuery 工作 我的 RegEx      更新时间:2023-09-26

有人可以帮助我,请,我想显示一个错误,当用户使用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;
        });
    });

我写在jsfield

删除父条件if ($('input[name="nama"]').val() === ""),因为如果要分析输入值,它是无意义的。

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

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

I got this working:

$(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;
        }
    });
});

只有当值为空时才检查内部条件。如果它不是空的,那么你的内部状态检查甚至没有进行。参见外部检查-

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

update:另外,最好像@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;
            }
    });
});

编辑:分享jsfiddle作为OP仍然不知道!。希望能有所帮助!

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