13

たとえば、「ユーザー名を空白にすることはできません」や「パスワードを空白にすることはできません」などのメッセージを含むユーザー名とパスワードのフィールドなど、2 つのフィールドに 2 つの異なるメッセージが必要です。メッセージを変更することしかできませんでしたが、両方のフィールドで同じです。ここです

$(document).ready(function() {
var elements = document.getElementsByTagName("INPUT");
for (var i = 0; i < elements.length; i++) {
    elements[i].oninvalid = function(e) {
        e.target.setCustomValidity("");
        if (!e.target.validity.valid) {
            e.target.setCustomValidity("Username cannot be blank");
        }
    };
    elements[i].oninput = function(e) {
        e.target.setCustomValidity("");
    };
} })
4

4 に答える 4

15

申し訳ありませんが、私のコードにいくつかの間違いがあります。それを試してください、それは私にとってはうまくいきます:

$(document).ready(function() {
var msg="";
var elements = document.getElementsByTagName("INPUT");

for (var i = 0; i < elements.length; i++) {
   elements[i].oninvalid =function(e) {
        if (!e.target.validity.valid) {
        switch(e.target.id){
            case 'password' : 
            e.target.setCustomValidity("Bad password");break;
            case 'username' : 
            e.target.setCustomValidity("Username cannot be blank");break;
        default : e.target.setCustomValidity("");break;

        }
       }
    };
   elements[i].oninput = function(e) {
        e.target.setCustomValidity(msg);
    };
} 
})
于 2013-06-07T08:48:37.747 に答える
3

idユーザー名要素とパスワードinput要素の両方に属性を追加できます。

<input placeholder="Username" required id="username" />
<input type="password" placeholder="Password" required id="password" />

次に、ステートメントを使用してswitch、イベントのターゲットに従ってカスタム検証メッセージを追加できます。

$(document).ready(function () {
    var elements = document.getElementsByTagName("INPUT");
    for (var i = 0; i < elements.length; i++) {
        elements[i].oninvalid = function (e) {
            e.target.setCustomValidity("");
            if (!e.target.validity.valid) {
                switch (e.srcElement.id) {
                    case "username":
                        e.target.setCustomValidity("Username cannot be blank");
                        break;
                    case "password":
                        e.target.setCustomValidity("Password cannot be blank");
                        break;
                }
            }
        };
        elements[i].oninput = function (e) {
            e.target.setCustomValidity("");
        };
    }
})

これがデモです。

于 2013-06-02T19:58:23.387 に答える
0

すべての入力要素でループを作成するため、各要素で同じ結果が得られます。ユーザー名とパスワードなどの入力にIDを指定してから、試してください:

$(document).ready(function() {
var msg="";
var elements = document.getElementsByTagName("INPUT");
for (var i = 0; i < elements.length; i++) {
    elements[i].oninvalid = function(e) {
        e.target.setCustomValidity("");

        switch(e.target.id){
            case "password" :
            msg="Bad password";
            case "username" :
            msg="Username cannot be blank";
        }

        if (!e.target.validity.valid) {
            e.target.setCustomValidity(msg);
        }
    };
    elements[i].oninput = function(e) {
        e.target.setCustomValidity("");
    };
} })
于 2013-06-02T19:58:01.037 に答える