【问题标题】:Select options dropdown validation inside form在表单内选择选项下拉验证
【发布时间】:2016-12-30 06:15:49
【问题描述】:

我们正在尝试为表单内的 Select 选项添加验证,它对第一个下拉字段工作正常,但验证不适用于 第二个下拉字段第三个多选复选框字段 .

意味着当我们点击提交按钮时,表单正在提交并且值正在保存在数据库中,而不关心第二和第三字段。

php

<form method="post" enctype='multipart/form-data' action="update.php" id="" onsubmit="return validate(); ">

        Designer : 
          <select onchange="getOrderDetail(event);" name="designer_id" id="designer_id" required>
            <option value="">Select Designer</option>
                  <?php 
                       while($data = $stmt->fetch())  
                        { 
                           if($data['type']=="admin")continue;
                  ?>
            <option value="<?php echo $data['userID'];?>">
                  <?php 
                     echo $data['name'];
                  ?>
            </option>
                  <?php } ?>
          </select>

      Order : 


        <div id="ordernumbers">
          <select name="designerorder_id" id="designerorder_id" required>
            <option>Select Order</option>
          </select>
          </div>      

      Product

        <div id="productnumbers" name="dproduct_id" id="dproduct_id" required>
          <select id="mySelect" >
            <option>Select Products</option>
          </select>

        </div>

脚本

function validate()
{

 var error="";

 var designer_id = document.getElementById( "designer_id" );
 if( designer_id.value == "" )
 {
  error = " Please Select Designer";
  document.getElementById( "error_para1" ).innerHTML = error;
  return false;
 }

 var error="";
 var designerorder_id = document.getElementById( "designerorder_id" );
 if( designerorder_id.value == "" )
 {
  error = " Please Select Order";
  document.getElementById( "error_para2" ).innerHTML = error;
  return false;
 }


 var error="";
 var dproduct_id = document.getElementById( "dproduct_id" );

 if( dproduct_id.value == "" )
 {
  error = " Please Select Product";
  document.getElementById( "error_para3" ).innerHTML = error;
  return false;
 }

}

function getOrderDetail(e)
  {
    var designerId=e.target.options[e.target.selectedIndex].value;    
    var url="http://sbdev2.kidsdial.com:81/php/site6/designerpaidstatus.php?designer_id="+designerId+"&opration=2";
       var request = jQuery.ajax( {
                url: url ,
                type: 'POST',                      
            } );

            request.done( function (result)
            {  
              document.getElementById('ordernumbers').innerHTML =result;

            } );
            request.fail( function ( error )
            {
                console.dir(error);             
            } );
     }
  function getProductDetail(e)
  {    
    var productId = $("#dproductselect option:selected").attr("class");  
    var finalstrig=productId.split(",");

    var select='';
    select+='<select class="test" multiple="multiple" name="dproduct_ids" id="dproduct_ids">';

    for(i=0;i<finalstrig.length;i++)
    {
      if(finalstrig[i]!=0)
      {
        select +='<option value="'+finalstrig[i]+'">'+finalstrig[i]+'</option>';
      }
    }
    select +='</select>';   
    document.getElementById('productnumbers').innerHTML =select;
    (function($) {
    $(function() {
        $('.test').fSelect();
    });
})(jQuery);

  }

$(function(){
  $("#button_reset").click(function() { 
    $("#productnumbers").html('<select id="mySelect"><option>Select Products</option></select>');
  });
});

编辑 - Designerpaidstatus.php

$htmltext='';   
    $htmltext="<select id='dproductselect' name='designerorder_id' onchange='getProductDetail(this.value)'><option value=''>Select Order</option>";
    foreach ($order as $orderData)  
    {
        $orderitems=$orderData['dproduct_id'];

            $finalValue=$orderData->getIncrementId()."-".$orderitemsarray[$k];
            $htmltext=$htmltext.'<option class="'.$orderitems.'" name="'.$orderitems.'" value="'.$orderData->getIncrementId().'">'. $orderData->getIncrementId().'</option>';
    }
    $htmltext=$htmltext."</select>";
    echo $htmltext;exit;

【问题讨论】:

  • 在designerpaidstatus.php 上你要返回什么?它应该与选择框返回相同的 id
  • 您好更改designerpaidstatus.php 选择框ID 和designerorder_id
  • @NishantSaini 我按照你的说法进行了更改,现在第二个字段 validation 正在工作,但是对于第三个字段 product,多选框不显示任何值。
  • 等我检查一下
  • 使用下面的代码验证多个选择框值

标签: javascript php forms validation


【解决方案1】:

您好,将此代码用于多个选择框

function multiple1()
{
var options = $('#dproduct_ids > option:selected');
         if(options.length == 0){
             alert('no value selected');
             return false;
         }
  
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="test" multiple="multiple" name="dproduct_ids" id="dproduct_ids" name="test[]">
  <option value="test1">test1</option>
  <option value="test2">test2</option>
  </select>
<input type="button" value="submit" onclick="multiple1()">

【讨论】:

    【解决方案2】:

    function validate()
    {
    
     var error="";
    alert("Test");
     var designer_id = document.getElementById( "designer_id" );
     if( designer_id.value == "" )
     {
       
      error = " Please Select Designer";
      document.getElementById( "error_para1" ).innerHTML = error;
      return false;
     }
    
     var error="";
     var designerorder_id = document.getElementById( "designerorder_id" );
     if( designerorder_id.value == "" )
     {
      error = " Please Select Order";
      document.getElementById( "error_para2" ).innerHTML = error;
      return false;
     }
    
    
     var error="";
     var dproduct_id = document.getElementById( "dproduct_id" );
    
     if( dproduct_id.value == "" )
     {
      error = " Please Select Product";
      document.getElementById( "error_para3" ).innerHTML = error;
      return false;
     }
    
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form method="post" enctype='multipart/form-data' action="update.php" id="" onsubmit="return validate(); ">
    
            Designer : 
              <select onchange="getOrderDetail(event);" name="designer_id" id="designer_id" required>
                <option value="">Select Designer</option>
                     
              </select>
    
          Order : 
    
    
            <div id="ordernumbers">
              <select name="designerorder_id" id="designerorder_id" required>
                <option>Select Order</option>
              </select>
              </div>      
    
          Product
    
            <div id="productnumbers" name="dproduct_id" id="dproduct_id" required>
              <select id="mySelect" >
                <option>Select Products</option>
              </select>
    
            </div>
      
      <div id="error_para1">Test</div>
      <div id="error_para2"></div>
      <div id="error_para3"></div>
    
    <button type="submit" onclick="validate" >Submit</button>
    </form>

    对于第一个选择,您已将选项值明确设置为空字符串

    function validate()
    {
    
     var error="";
    
     var designer_id = document.getElementById( "designer_id" );
     if( designer_id.value == "" )
     {
      error = " Please Select Designer";
      document.getElementById( "error_para1" ).innerHTML = error;
      return false;
     }
    
     var error="";
     var designerorder_id = document.getElementById( "designerorder_id" );
     if( designerorder_id.value == "" )
     {
      error = " Please Select Order";
      document.getElementById( "error_para2" ).innerHTML = error;
      return false;
     }
    
    
     var error="";
     var dproduct_id = document.getElementById( "dproduct_id" );
    
     if( dproduct_id.value == "" )
     {
      error = " Please Select Product";
      document.getElementById( "error_para3" ).innerHTML = error;
      return false;
     }
      
      alert("All Good");
    
    }
    <form >
    
            Designer : 
              <select  name="designer_id" id="designer_id" required>
                <option value="">Select Designer</option>
                     <option value="1">1</option>
              </select>
    
          Order : 
    
    
            <div id="ordernumbers">
              <select name="designerorder_id" id="designerorder_id" required>
                <option value="">Select Order</option>
                 <option value="1">1</option>
              </select>
              </div>      
    
          Product
    
            <div id="productnumbers" name="dproduct_id"  required>
              <select id="dproduct_id" >
                <option value="">Select Products</option>
                 <option value="1">1</option>
              </select>
    
            </div>
      <button type="submit" onclick="return validate(); ">Submit</button>
      <div id="error_para1">T</div>
      <div id="error_para2"></div>
      <div id="error_para3"></div>
      </form>

    而对于下一个你还没有这样做。 所以下面的检查不起作用

    if( designerorder_id.value == "" )

    if( dproduct_id.value == "" )

    【讨论】:

    • 你能告诉我需要做哪些代码更改才能为我的案例找到解决方案吗?
    • 我试过你的代码,但只能从第一个字段下拉列表中工作。
    • @user5348fh8y5 无法登录。
    • 对不起,我不知道,对我来说登录是有效的,没关系,我得到了解决方案,谢谢你的时间.....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2013-09-18
    • 2016-11-21
    • 2012-01-13
    • 2022-07-06
    相关资源
    最近更新 更多