1

私はjQuery検証プラグインを使用していますが、それはうまく機能します。

リモートajaxが失敗したときはいつでも、メッセージを表示し、モーダル(例ではalert())をトリガーできるようにしたいと思います。私は両方を行う方法を理解することはできません。これで、alert()が期待どおりにトリガーされますが、「このフィールドを修正してください」というエラーメッセージも追加されます。これは、私自身のカスタムエラーメッセージである必要があります。

これが私が持っているものです:

$("#adresse-form").validate({

        errorElement: "span",

        rules: {

            navn: {
                required: true,
                minlength: 5,
                maxlength: 25
            },
            tlf: {
                required: true,
                digits: true,
                minlength: 8,
                remote: {
                    url: "/ajax/check_tlf",
                    type: "post"
                }
            }
        },

        messages: {

            navn: "Field Name is required",
            tlf: {
                required: "Field tlf is required!",
                remote: function () { // i want to add the message aswell, not just the alert

                    alert("failed - tlf is already taken!");
                }
            }

        },
        submitHandler: function(form) {
            doSomethingGreatOnSuccess();
        },

        errorPlacement: function (error, element) {
            error.appendTo(element.parent());
        }

    });
4

3 に答える 3

2

メッセージが関数になる可能性があることを知りませんでした。通常、メッセージは文字列です。ただし、あなたが示したように、メッセージは関数にすることができます。メッセージが表示されない理由は、メッセージが関数の場合、 string を返さなければならないからです。

rules : {...}
messages: 
{
    tlf: 
    {
        required: "Field tlf is required!",
        remote: function (val) 
        {
           alert("failed - " + val + " is already taken!");
           return "remote validation failed";
        }
    }
}
于 2013-02-08T14:41:17.170 に答える
1

これが私がそれを機能させた方法です:

jQuery.validator.addMethod("avail",function(value,element){
    var isSuccess = true;

    $.ajax({
        url: "/avail",
        type: 'POST',
        data: { tlf: value },
        async: false,
        success: function (msg) {
            isSuccess = msg === "true" ? true : false;
            if (!isSuccess) {
                $('#myModal').reveal();
            }
        }
    });
    // return isSuccess;
});

そしてルールでは:

tlf: {
                required: true,
                digits: true,
                minlength: 8,
                avail: true
            }

そしてメッセージ:

tlf: {
                required: 'Must enter phone number',
                avail: 'Phone number is already taken!'
            },

同様の問題を抱えている人には、 https ://stackoverflow.com/a/2628442/839716 で非常に多くの助けが見つかりました。

于 2013-02-08T16:54:30.370 に答える