0

フォーム内のいくつかのフィールドを検証するためにjQueryを使用していますが、特に1つのフィールドで問題が発生しているようです(#inputTel)。

間違った形式を入力すると、その下にエラーメッセージが表示されますが、これは問題ありませんが、正しい形式を入力するとメッセージが消えないという問題があります。

これが完全なデモを含むjsFiddleです。

これは問題のセクションです:

//Tel Validate
function is_valid_tel() {
    $this = $("#inputTel");
    var pattern = new RegExp("^\d{11}$");
    if (pattern.test($this.val())) { // valid
        if ($this.closest(".control-group").hasClass("error")) $this.closest(".control-group").removeClass("error");
        $this.siblings(".help-inline").css("display", "none");
        return true;
    } else { // error
        if (!$this.closest(".control-group").hasClass("error")) $this.closest(".control-group").addClass("error");
        $this.siblings(".help-inline").css("display", "block");
        return false;
    }
}

これを除いて、他のすべてのフィールドは期待どおりに機能します。私のjQueryスキルは限られているので、これを解決する方法がわかりません。

4

2 に答える 2

1

コードの問題:

に置き換えvar pattern = new RegExp("^\d{11}$");ますvar pattern = new RegExp(/^\d{11}$/);

更新されたコード

//Tel Validate
function is_valid_tel() {
    $this = $("#inputTel");
    var pattern = new RegExp(/^\d{11}$/);// Update this line
    if (pattern.test($this.val())) { // valid
        if ($this.closest(".control-group").hasClass("error")) $this.closest(".control-group").removeClass("error");
        $this.siblings(".help-inline").css("display", "none");
        return true;
    } else { // error
        if (!$this.closest(".control-group").hasClass("error")) $this.closest(".control-group").addClass("error");
        $this.siblings(".help-inline").css("display", "block");
        return false;
    }
}

フィドルを確認してくださいhttp://jsfiddle.net/rfg8H/

于 2013-02-12T09:30:44.510 に答える
1

以下のような、あまり面倒ではないものを使用することもできます。

$(function() {
            function validateTheForm() {
              var ok = true;
                $(".input-medium").each(function() {
                if($(this).val() == "") //use regex actually here
                { 
                  $(this).next().css("display","inline");
                  ok = false;
                }
                else {
                    $(this).next().css("display","none");
                }


            });
                return ok;
            }
            $(".btn").click(function() {
              $("form").submit(validateTheForm());
              $("form").submit();

            });

        });
于 2013-02-12T11:15:14.470 に答える