【问题标题】:html form inside php tag radio button validation?php标签单选按钮验证内的html表单?
【发布时间】:2015-01-24 19:00:01
【问题描述】:

如何验证单选按钮。至少选择了一个选项。

代码将显示一个问题和 3 个答案作为数据库中的单选按钮。 例如

what is Captial of India?
O New Delhi
O Chennai
O Mumbai

用户必须选择正确的答案。如果用户没有选择任何答案并单击提交,我想显示一条消息“请回答问题”。?

我的代码:

<?php

$today=date("Y-m-d");
mysql_query("SET CHARACTER SET utf8");
echo "<form method='post' id='submit' action='checkresult.php' dir='rtl'>";
$sql="SELECT * FROM cquestions where showdate='$today' limit 1";
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo "<p>" . $row['cqtext'] . "</p>";
$sql2="SELECT * FROM canswers where cqid=".$row['cqid'];
$result2=mysql_query($sql2);
while($row2=mysql_fetch_assoc($result2))
{
echo "<input type='radio' name='".$row['cqid']."' value='".$row2['cqans']."' />".$row2['aatext'];
echo"<br>";
}
}
echo"<br>";
echo"<br>";
echo"<br>";
echo "<div align='left' style='padding-left:160px;'>";
echo"<input type='submit' id='submit' name='submit' value='التالي' />";
echo "</div>";
echo "</form>" ;
?>

如何使用javascript做到这一点?

我试过这样。

echo "<form name='q1' method='post' id='submit' action='checkresult.php' onsubmit='return validateForm()';>";

echo "<input type='radio' id='a' name='".$row['cqid']."' value='".$row2['cqans']."' />".$row2['aatext'];

这行得通。

function validateForm() 
{
var a = document.getElementById('a');
if ( (a.checked == false ) )
{
alert ( "Please answer the question ");
return false;
}
}

成功了。

function RadioValidator()
{
    var ShowAlert = '';
    var AllFormElements = window.document.getElementById("submit").elements;
    for (i = 0; i < AllFormElements.length; i++) 
    {
        if (AllFormElements[i].type == 'radio') 
        {
            var ThisRadio = AllFormElements[i].name;
            var ThisChecked = 'No';
            var AllRadioOptions = document.getElementsByName(ThisRadio);
            for (x = 0; x < AllRadioOptions.length; x++)
            {
                 if (AllRadioOptions[x].checked && ThisChecked == 'No')
                 {
                     ThisChecked = 'Yes';
                     break;
                 } 
            }   
            var AlreadySearched = ShowAlert.indexOf(ThisRadio);
            if (ThisChecked == 'No' && AlreadySearched == -1)
            {
            ShowAlert = ShowAlert + ThisRadio + ' يرجى الإجابة على السؤال\n';
            }     
        }
    }
    if (ShowAlert != '')
    {
    alert(ShowAlert);
    return false;
    }
    else
    {
    return true;
    }
}
</script>

【问题讨论】:

  • 如果用户点击提交,它将转到下一个问题。他必须回答这个问题。现在没有选择任何答案,如果我们点击提交它会转到下一个问题。我想防止这种情况发生。
  • 应始终验证传入数据。这种情况下只能通过php来完成。
  • 在php中怎么做?
  • 在 w3schools 上,您可以找到 tutorial 用于使用 php 验证表单数据。

标签: javascript php html validation radio-button


【解决方案1】:

如果用户没有选择任何答案并点击提交,我想显示一条消息“请回答问题”。? ...如何使用javascript来做到这一点?

您需要检查是否选中了任何一个单选按钮。一个方便的方法是给它们一个类,然后检索所有具有该类名的 DOM 元素。

这是一个例子。

<form onsubmit="return validateForm();">
  <!-- note how all the radio buttons have the same name -->
  <input type='radio' class="question" name='question' value='New Delhi' />
  <input type='radio' class="question" name='question' value='Chennai' />
  <input type='radio' class="question" name='question' value='Mumbai' />
  <input type="submit" value="submit" />
</form>
<script>
  function validateForm() {
    var questions = document.getElementsByClassName('question'),
      i = 0;

    for (; i < questions.length; i++) {
      if (questions[i].type === 'radio' && questions[i].checked) {
        alert('You selected ' + questions[i].value 
                              + ', the form will submit now');
        return true;
      }
    }
    alert('please answer the question');
    return false;
  }
</script>

但是,如果页面上有多个表单,则应注意单选按钮属于正在提交的表单。

【讨论】:

    【解决方案2】:
    echo "<form name='q1' method='post' id='submit' action='checkresult.php' onclick='return validateForm(e)';>";
    
    <script type="text/javascript">
    
    function validateForm(e) {
      e.preventDefault();
      var a = document.getElementById('a');
      if ( (a.checked == false ) )
      {
        alert ( "please answer the question ");
        return false;
      }
    }
    
    </script>
    

    试试这个

    【讨论】:

      【解决方案3】:

      试试这个..

      if(isset($_POST['submit']))
      {
      if($row['cqid']=="")
      {
      echo "Please select an answer";
      }
      }
      

      我不知道它是否有效..但是请尝试一下...

      【讨论】:

        【解决方案4】:

        由于你的 JS 函数声明错误,它没有工作。

        这是声明函数的正确方式。记得使用大括号。

        function validateForm() {
           var a = document.getElementById('a');
           if (!a.checked)
           {
             alert ( "please answer the question ");
             return false;
           }
        }
        

        另外,如果您想让我们知道为什么 php 代码不起作用,我们需要查看源代码。

        【讨论】:

        • 没有。它不工作.. php 代码工作。只是我想确保用户回答了这个问题。如果他点击提交而不回答问题应该显示一条消息,请回答问题。该页面不应转到 checkresult.php。
        猜你喜欢
        • 2013-07-07
        • 2011-10-18
        • 2013-01-22
        • 2013-08-01
        • 2013-12-04
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多