0

更新せずにフォームを検証するためのこのチュートリアルを見つけたので助けが必要です が、問題はこれがテキストフィールドだけのためだと思うことです:)しかし私は4つの異なるラジオボタンを使用していますこれらのラジオボタンで動作するにはこのスクリプトが本当に必要です!

これがjavascriptファイルです:)!

runOnLoad(function(){
  $("input#name").select().focus();         
});

$(function() {        
    $('.error').hide();        
    $(".button").click(function() {  

        // validate and process form here  
        $('.error').hide(); 
        var name = $("input#name").val();  

        if (name == "") {  
            $("label#name_error").show();  
            $("input#name").focus();  
            return false;  
        }  

        var email = $("input#email").val();  
        if (email == "") {  
            $("label#email_error").show();  
            $("input#email").focus();  
            return false;  
        }  

        var mobile = $("input#mobile").val();  
        if (mobile == "") {  
            $("label#mobile_error").show();  
            $("input#mobile").focus();  
            return false;  
        }  

        var college = $("input#college").val();  
        if (college == "") {  
            $("label#college_error").show();  
            $("input#college").focus();  
            return false;  
        }  

        var university = $("input#university").val();  
        if (university == "") {  
          $("label#university_error").show();  
          $("input#university").focus();  
          return false;  
        }  

        var level = $("input#level").val();  
        if (level == "") {  
          $("label#level_error").show();  
          $("input#level").focus();  
          return false;  
        }  

        var first_preference = $("input#first_preference").val();  
            if (first_preference == "") {  
          $("label#first_preference_error").show();  
          $("input#first_preference").focus();  
          return false;  
        }  

        var second_preference = $("input#second_preference").val();  
        if (second_preference == "") {  
          $("label#second_preference_error").show();  
          $("input#second_preference").focus();  
          return false;  
        }  

        var third_preference = $("input#third_preference").val();  
        if (third_preference == "") {  
          $("label#third_preference_error").show();  
          $("input#third_preference").focus();  
          return false;  
        }  

        var heard = $("input#heard").val();  
        if (heard == "") {  
          $("label#heard_error").show();  
          $("input#heard").focus();  
          return false;  
        }     

        var applying = $("input#applying").val();  
        if (applying == "") {  
          $("label#applying_error").show();  
          $("input#applying").focus();  
          return false;  
        }    

        var strength = $("input#strength").val();  
        if (strength == "") {  
          $("label#strength_error").show();  
          $("input#strength").focus();  
          return false;  
        }   

        var weakness = $("input#weakness").val();  
        if (weakness == "") {  
          $("label#weakness_error").show();  
          $("input#weakness").focus();  
          return false;  
        }    

        var previousEx = $("input#previousEx").val();  
        if (previousEx == "") {  
          $("label#previousEx_error").show();  
          $("input#previousEx").focus();  
          return false;  
        }   



        var dataString = 'name='+ name + '&email=' + email + '&mobile=' + mobile + '&college=' + college + '&university=' + university + '&level=' + level + '&first_preference=' + first_preference + '&second_preference=' + second_preference + '&third_preference=' + third_preference + '&heard=' + heard + '&applying=' + applying + '&strength=' + strength + '&weakness=' + weakness + '&previousEx=' + previousEx;

        $.ajax({
              type: "POST",
              url: "php/database_sorting.php",
              data: dataString,
              success: function() {
                $('#contact_form').html("<div id='message'></div>");
                $('#message').html("<h2>Contact Form Submitted!</h2>")
                .append("<p>We will be in touch soon.</p>")
                .hide()
                .fadeIn(1500, function() {
                  $('#message').append("<img id='checkmark' src='images/done.png' />");
                });
              }
        });
        return false;
    });
});

デモ:

4

1 に答える 1

1

名前でグループ化されたラジオボタンがあると仮定して、そのうちの1つが選択されているかどうかを確認します。

//update the name to correspond to your radios group's name
if (!$('input[type="radio"][name="radiosGroup"]:checked').length) {
    alert('no radios selected!');
    //you can adapt the error message to your liking,
    //e.g. replacing the alert with $('#radio_error').show()
    return false;
}

フィドル


ラジオボタンのJS検証を「スキップ」する別の方法は、ページを生成するときにボタンの1つを事前にチェックしたままにすることです。

<input type="radio" name="radiosGroup" checked="checked" value="1" />

このようにして、無線の1つが常に選択されます。


HTML5を使用すると、要素(ボタン入力を除く)のrequired属性を使用して、最新のブラウザーのJS検証をスキップできます。フィドルinput


最後に、すべてのinput/ textarea/ checkbox/がフォーム内にある場合は、手動で作成する代わりに、radiojQueryを使用してクエリ文字列を生成できます。.serialize()また、フォーム内にない場合は、フォーム内にラップすることができます。

$('#myForm').serialize();

フィドル


また、質問ですでにコメントしているように、JS検証はより優れたUIを提供するためのものです(たとえば、ページを更新せずにエラーを表示する)。JSを簡単にバイパスできるため、サイトを公開する場合はサーバー側の検証が必要です。


もう1つ注意してください。inputフォーム内にあると仮定すると、ボタンをクリックするよりもフォームの.submit()ハンドラーに検証をアタッチして、ブラウザーやユーザーのクリックとは関係なくフォームが送信されるたびに検証が実行されるようにすることをお勧めします。送信ボタンで、またはテキスト入力要素でEnterキーを押します。

于 2012-08-30T01:41:23.157 に答える