46

入力が必要かどうかを確認する最も簡単な方法は何ですか? 私はこれらの線に沿って何かを試してきましたが、常に必要なものすべてを考え出します (4/6 だけです)。

$('form#register').find('input').each(function(){
    if($(this).prop('required') == 'undefined'){
        console.log("NR");
    } else {
        console.log("IR");
    }
})

(私は .attr も試しました)

フォームの ajax 検証に使用しようとしていますが、現時点では次のようにしています。

if($('form#register span').length == $('form#register').children(".green").length){
    $('input#register-sub').prop('disabled', false);
} else {
    $('input#register-sub').prop('disabled', true);
}

ありがとう。

編集: HTML の追加

<form id="register" action="" method="post" autocomplete="on">
<label>Nickname:</label><input type="text" name="name" value="<? echo $_POST['name'] ?>" required="" /><span id="reg-name"></span><br />

<?  if($user->type == "l"){ ?>
<label>email:</label><input type="email" name="email" value="<? echo $_POST['email'] ?>" required="" /><span id="reg-email"></span><br />
<label>Password:</label><input type="password" name="password" value="<? echo $_POST['password'] ?>" required="" /><span id="reg-password"></span><br />
<label>Again:</label><input type="password" name="password-test" value="<? echo $_POST['password-test'] ?>" required="" /><span id="reg-password-test"></span><br />
<label>Avatar:</label><input type="url" name="avatar" value="<? echo $_POST['avatar'] ?>" /><span id="reg-avatar"></span><br /> 
<? } ?>

<input type="submit" value="Register" disabled="" id="register-sub"/>

4

6 に答える 6

17

受け入れられた回答に触発された、もう少し完全な回答:

$( '#form_id' ).submit( function( event ) {
        event.preventDefault();

        //validate fields
        var fail = false;
        var fail_log = '';
        var name;
        $( '#form_id' ).find( 'select, textarea, input' ).each(function(){
            if( ! $( this ).prop( 'required' )){

            } else {
                if ( ! $( this ).val() ) {
                    fail = true;
                    name = $( this ).attr( 'name' );
                    fail_log += name + " is required \n";
                }

            }
        });

        //submit if fail never got set to true
        if ( ! fail ) {
            //process form here.
        } else {
            alert( fail_log );
        }

});

この場合、すべてのタイプの入力をループし、必要な場合は値があるかどうかを確認し、値がない場合は、必要であるという通知を実行するアラートに追加します。

この例では、AJAX などを介して肯定的な条件内でフォームが処理されることを前提としています。従来の方法で送信する場合は、2 行目event.preventDefault();を否定条件の内側に移動します。

于 2015-05-11T04:54:17.930 に答える
0

に応答して:

入力が必要かどうかを確認する最も簡単な方法は何ですか?

答えは次のとおりです。

.is()の力

.is('[type="image"]')、.is(':disabled') または .is('[disabled]')... などの属性をチェックするために使用します。ブール値。

    
    $(':input').each(function(){
      var ID  = $(this).prop('id'),
          req = $(this).is('[required]'),
          img = $(this).is('[type="image"]');
      
      if(img){
        alert(ID + ' is an image input');
      } else {
        alert(ID + ' is NOT an image');
      }
      
      if(req){
        alert(ID + ' is required');
      } else {
        alert(ID + ' is NOT required');
      }
      

    });

        
   
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="inOne" name="test" required>
<input type="text" id="inTwo" name="test">
<input type="image" id="inThree" name="test" required>

于 2021-11-11T03:03:18.967 に答える