带有单选按钮检查验证的jQuery Post

带有单选按钮检查验证的jQuery Post,jquery,validation,post,button,radio,Jquery,Validation,Post,Button,Radio,我有一个页面,它使用jquerypost提交表单并在同一页面中返回div标记内的数据。然后表单仍然可以访问,这样就可以向用户询问多个问题,并从数据库中获取信息 在第一次尝试提交表单时,如果用户没有选择单选按钮,他们会收到一个警告框,提示他们必须进行选择。但是在第一次通过后,用户可以提交表格而无需进行选择 单选按钮保持其设定值。关于如何使用此格式并确保在每次连续提交表单时选中一个单选按钮,有何想法 下面是test.php的第一页 <!doctype html public "-//W

我有一个页面,它使用jquerypost提交表单并在同一页面中返回div标记内的数据。然后表单仍然可以访问,这样就可以向用户询问多个问题,并从数据库中获取信息

在第一次尝试提交表单时,如果用户没有选择单选按钮,他们会收到一个警告框,提示他们必须进行选择。但是在第一次通过后,用户可以提交表格而无需进行选择

单选按钮保持其设定值。关于如何使用此格式并确保在每次连续提交表单时选中一个单选按钮,有何想法

下面是test.php的第一页

    <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>

    <title>test jQuery post</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>

    <script type="text/javascript">
    //<![CDATA[
    jQuery.noConflict ();

    jQuery(document).ready(function(){
      initializeForm();
      });

    function initializeForm() {
      jQuery("#university").validate({

          debug: false,
          submitHandler: function(form) {


          var validationTypes = jQuery("#validationTypes");
          var valid = false;


                        if (validationTypes.val()== 'radio')
                            {
                               for(i=0; i<university.radio.length; i++) if(university.radio[i].checked) {valid=true;}

                                if (valid == false)
                                      {
                                          alert ( "Please pick an answer before trying to Submit this form." );
                                          return false;
                                      }

                            }


              jQuery.post('post.php',
                  jQuery("#university").serialize(),
                  function(data) {
                      jQuery('#box').html(data);
                      initializeForm();

                  });

          }

      });
      }



    // ]]>
    </script>
    </head>
    <body>
    <div id="box"><? include('post.php') ?></div>
    </body>
    </html>

测试jquerypost
//
这是post.php的第二页

<?

$radio = (isset($_POST['radio'])? $_POST['radio']: 0);
    switch ($radio)
        {
          default:
          echo 'pick a number<br /><br />';
          break;
          case '1':
          echo 'you pick one<br /><br />Pick Again<br /><br />';
          break;
          case '2':
          echo 'you pick two<br /><br />Pick Again<br /><br />';
          break;
          case '3':
          echo 'you pick three<br /><br />Pick Again<br /><br />';
          break;
        }
?>
<form action="" method="POST" id="university" name="university">
<input type="radio" name="radio" value="1" /> 1&nbsp;&nbsp;
<input type="radio" name="radio" value="2" /> 2&nbsp;&nbsp;
<input type="radio" name="radio" value="3" /> 3&nbsp;&nbsp;
<input type="hidden" name="validationTypes" id="validationTypes" value="radio">
<input type="submit" name="submit" value="submit" /></form>

1.
2.
3.

我认为验证(
jQuery(“#university”).validate
)的事件处理程序仍然附加到提交表单后刚刚替换的HTML(
jQuery('#box').HTML(数据)

因此,在这种情况下,我可以考虑两种选择,我认为这将解决您的问题:

  • 简单的解决方案:将javascript的这一部分移动到post.php页面中(因此每次加载表单时都会执行该部分):

  • 性能解决方案:将post.php页面中的HTML移动到下方,关闭test.php页面中的
    “box”
    div。然后用一些东西来清除这些值,如:

    $('input[name=radio]').val([]);
    

  • 我认为用于验证(
    jQuery(“#university”).validate的事件处理程序仍然附加到您在提交表单(
    jQuery(“#box”).HTML(数据)
    )后刚刚替换的HTML中

    因此,在这种情况下,我可以考虑两种选择,我认为这将解决您的问题:

  • 简单的解决方案:将javascript的这一部分移动到post.php页面中(因此每次加载表单时都会执行该部分):

  • 性能解决方案:将post.php页面中的HTML移动到下方,关闭test.php页面中的
    “box”
    div。然后用一些东西来清除这些值,如:

    $('input[name=radio]').val([]);
    

  • 用户提交后是否正在清理表单?在您的submitHandler中,我看不到任何地方定义了
    university
    。您的意思是使用
    文档。大学
    ?你有javascript错误吗?Sergio,我没有清理表单?提交后。。。不知道你说的是什么RoccoC5。。。您是指提交处理程序中的jQuery(“#university”).serialize()这一行吗?您是在用户提交后清理表单吗?在您的提交处理程序中,我看不到定义了
    university
    。您的意思是使用
    文档。大学
    ?你有javascript错误吗?Sergio,我没有清理表单?提交后。。。不知道你说的是什么RoccoC5。。。您是指提交处理程序中的jQuery(“#university”).serialize()这一行吗?