0

フォームを検証しようとしていますが、ラベルがなく、すべてのメッセージが同じ入力に含まれています。

希望どおりに機能するhtmlがありますが、jQueryではelseifなどに問題があります。

私は言いたいのです:
-入力名がまだ名前である場合はメッセージ名がありません(これは機能しているようです)
-入力アドレスがまだアドレスである場合はメッセージアドレスがありません(機能しません)
-入力が住所と入力名が住所または名前ではありませんフォームを送信してください(機能しません)

ここに例があります:http://jsfiddle.net/4ervc/20/

HTML:

<form id="form" action="#">
    <input type="text" name="name" id="name" value="name" 
    onfocus="if (this.value=='name'||'name is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'name';"  />
    <br />

    <input type="text" name="address" id="address" value="address" 
    onfocus="if (this.value=='address'||'address is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'address';"  />
    <br />

    <input type="submit" name="submit" id="submit">
</form>

JQUERY:

$(function(){

    $("#form").submit(function (e) {

        if ($('#name').val("name")) {
            e.preventDefault();
            $('#name').val("name is missing");
        }else if ($('#address').val("address")) {
            e.preventDefault();
            $('#address').val("address is missing");
        }else{
             $("#form").submit;
        }

    });

})
4

2 に答える 2

1

値「名前」を設定しています

これを使用してみてください:

$('#name')。val()== "name"

あなたの中にifステートメント

于 2012-10-16T14:55:02.113 に答える
0

元のコードに関するいくつかの問題:

  1. 送信呼び出し$("#form").submit;が正しくありませんでした$("#form").submit();
  2. if-elseifロジックを使用していたため、検証では、名前フィールドが正しい場合にのみアドレスフィールドを検証していました。毎回すべてのフィールドを検証する必要があります。
  3. $('#name').val() === 'name'ではなく、を使用してフィールド値を比較する必要があります$('#name').val('name')

以下では、単純なフラグを使用し、各フィールドを個別にチェックすることで、これらの問題を修正しています。送信呼び出しも修正されています。

これを試してください:http://jsfiddle.net/4ervc/21/

$(function() {

    $("#form").submit(function(e) {

        //assume valid form
        var valid = true;
        if ($('#name').val() === 'name') {
            e.preventDefault();
            $('#name').val('name is missing');
            valid = false;
        }

        if ($('#address').val() === 'address') {
            e.preventDefault();
            $('#address').val('address is missing');
            valid = false;
        }

        if (valid) {
            $('#form').submit();
        }

    });
});

また、コードの臭いに関する注意事項として、スクリプト全体で一貫して一重引用符または二重引用符を使用するようにしてください。両方を少し使用しましたが、これは理想的ではありません(ただし、機能します)。

于 2012-10-16T14:59:20.097 に答える