【问题标题】:selective fields for jquery form validationjquery表单验证的选择性字段
【发布时间】:2013-06-04 05:55:17
【问题描述】:

我实际上是在创建一个调查表(类似于surveymonkey)。有一列您可以在其中选择您是否希望此问题成为必填字段。从那里将验证您在创建表单时刚刚勾选的所选字段。

所以现在我的问题是,必填字段如你所愿,所以它不是固定的。

如何编写用于验证的 jquery,以便它根据强制要求验证所选字段?

这是我到目前为止所做的代码示例。它仅验证其中一个字段。但如果创建表单的人决定有多个必填字段,则不会检查下一个。

<?php
$vQuery = "SELECT * FROM scFormLayout WHERE surveyID = '$id'";
$vResult = sqlsrv_query($conn, $vQuery);

while ($value = sqlsrv_fetch_array($vResult)) {
    $vID = $value['id'];
    $qnsID = 'qns'.$vID.'[]';
    $compulsory = $value['compulsory'];
    $vQuestion = $value['question'];

if ($compulsory == 'Compulsory') {
?>
    <script type="text/javascript" language="javascript">
        $(document).ready(function () {
            // 1. prepare the validation rules and messages.
               var rules = {"<?php echo $qnsID; ?>": "required"}; 
               var messages = {"<?php echo $qnsID; ?>": "<?php echo $vQuestion; ?> is required"};
            // 2. Initiate the validator
               var validator= new jQueryValidatorWrapper("Form",rules, messages);
            // 3. Set the click event to do the validation
               $("#btnValidate").click(function () {
                   if (!validator.validate())
                         return;
                   });
               });

   </script>
<?php } }
sqlsrv_free_stmt($vResult); ?>

【问题讨论】:

  • 因为你正在运行 document.ready 多次,它只会考虑最后一个。
  • 但是如果我将 php 代码移到 document.read 之后它甚至不起作用.. T_T 知道如何格式化它以便以某种方式工作..?谢谢..
  • @ManishJangir jQuery 运行所有 document.ready() 处理程序,而不仅仅是最后一个。
  • 你考虑过使用 jquery-validate 插件吗?您可以将required 类添加到所需的输入中。
  • @Barmar 但它会覆盖定义的对象。

标签: php jquery validation


【解决方案1】:

更好的方法是在你的 while 循环中为每个问题(应该是必需的)添加一个“必需”类。

然后只需在 document.ready() 函数内的单独脚本标记下的表单上使用 jquery.validate。让我知道它是否有帮助或您需要更多信息。

--- 编辑 --- 例如,在您的情况下,如果您在 while 循环中向用户显示来自数据库的问题,则对于某些问题,您将“强制”值设置为“强制”。现在您希望仅根据 jquery 的要求验证此类问题。那么下面是如何去做。

enter code here

<?php
while($res = $results) {
  echo $res['question'].'<br/>';
  if($res['compulsory'] = 'Compulsory')
      echo '<input name = "any_name" class="required">';
  else
      echo '<input name = "any_name">';
}
?>
<script>
$(document).ready(function () {

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

})
</script>

希望信息足够了。

【讨论】:

  • 嗨...你介意给我一些例子或指南,因为我对 jquery 很陌生。T_T 谢谢!
  • hmmm,我了解代码是如何工作的,但是因为我的问题的输入类型也是有选择性的,这里是打印出问题的示例。 if ($input == 'Multiple selection (only one answer) [Radio Button]') { ?>
    那么我需要为每个输入使用 if 吗?还是有另一种方法? >.
  • 您需要在每个强制输入中添加“必需”类。你可以选择任何方式来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多