验证表单而不刷新“radiobutton不起作用”

时间:2012-08-30 01:06:06

标签: jquery validation

我需要帮助我发现这个tutorial用于验证表单而不刷新但问题是我认为这仅适用于文本字段:)但我使用4种不同的radiobutton我真的需要这个脚本来处理这些radiobutton!

这是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;
    });
});

DEMO:

1 个答案:

答案 0 :(得分: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;
}

Fiddle


在单选按钮上“跳过”JS验证的另一种方法是在生成页面时预先检查其中一个:

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

这样就可以选择其中一个无线电。


使用HTML5,您可以使用required元素上的input属性(按钮输入除外)跳过现代浏览器的JS验证。 Fiddle


最后,如果您的所有input / textarea / checkbox / radio都在表单内,您可以使用jQuery的.serialize()生成查询字符串而不是手动构建它。如果它们不在表单内,您可以将它们包装在一个表单中。

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

Fiddle


正如已在问题中评论过的那样,JS验证只是为了提供更好的用户界面(例如,在不刷新页面的情况下显示错误),如果您将网站公开,则需要服务器端验证,因为JS可以轻松绕过


还有一个注意事项,假设您的input位于表单内部,最好将验证附加到表单的.submit()处理程序而不是单击按钮,以确保您的验证将会只要提交表单独立于浏览器或用户单击提交按钮或在文本输入元素中按Enter键,就会触发。