【问题标题】:Remove Validation for Reset button删除验证重置按钮
【发布时间】:2016-11-24 18:10:49
【问题描述】:

我有下面的表格,一旦我们选择“设计师”,它就会显示选择“订单号”的选项,如果选择“订单号”一次,它只会允许选择“产品”,其中“产品”是多选框。

假设我选择了“设计师”和“订单号”,而不是 当我点击重置按钮时,它会验证它要求填写“产品” 值,它适用于提交按钮,但它不应该对“RESET”按钮进行验证。

我正在尝试this,但仍然无法正常工作....

这里所有的选项值都是从下面的 php 代码中动态获取的。

产品是多选框

表格

<form method="post" enctype='multipart/form-data' action="update_paidstatus.php" onsubmit="return validate();">
    <table>
    <tr>
        <td> Designer </td>     
        <td>
          <select onchange="getOrderDetail(event);" name="designer_id" id="designer_id">
            <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>  
        </td> 

        <td><p id="error_para1" ></p></td>
    </tr> 

      <tr>
        <td>
           Order Number: 
        </td>
        <td>
        <div id="ordernumbers">
          <select name="designerorder_id" id="designerorder_id">
            <option value="">Select Order</option>
          </select>
          </div>
        </td>
         <td><p id="error_para2" ></p></td>
      </tr> 
      <tr>
        <td>
          Product 
        </td>
        <td>
        <div id="productnumbers" name="dproduct_ids" id="dproduct_ids">
          <select id="mySelect">
            <option>Select Products</option>
          </select>

        </div>
       </td>
        <td><p id="error_para3" ></p></td>
      </tr>

    </table>
    <hr/>

<input type="hidden" name="dproduct_id" id="dproduct_id" value=""/> 
   <input class="btn btn-large btn-primary" name="btn-signup" type="submit" id="btnSubmit" value="Submit" />
  <button formnovalidate="formnovalidate" class="btn btn-large btn-primary">RESET</button>

  </form>

脚本

function validate()
{
 // alert("d");
 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 dproduct_ids = document.getElementById( "dproduct_ids" );

 if( dproduct_ids.value == "" )
 {
  error = " Please Select Product";
  document.getElementById( "error_para3" ).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 commission = document.getElementById( "commission" );
 alert(commission.value );
 if(commission.value == "" )
 {
  error = " Please add commission";
  document.getElementById( "error_para5" ).innerHTML = error;
  return false;
 }
 var error="";
 var Duedate = document.getElementById( "Duedate" );
 if(Duedate.value == "" )
 {
  error = " Please Select Designer";
  document.getElementById( "error_para6" ).innerHTML = error;
  return false;
 }
  else
 {
  return true;
 }
}


$(document).ready(

  /* This is the function that will get executed after the DOM is fully loaded */
  function () {
    $( "#datepicker" ).datepicker({
      changeMonth: true,//this option for allowing user to select month
      changeYear: true //this option for allowing user to select from year range
    });
  }

);
  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);

  }
     <!-- reset -->
$("button").click(function() {
    $("#mySelect").val([]);
});

注意:我在这里发帖之前尝试了很多,我也是这个编程世界的新手......请帮助我......

【问题讨论】:

  • “RESET”按钮也是提交按钮 -> &lt;input type="reset" value="RESET" /&gt;
  • @Andreas 我只想删除reset button 的验证,所以我使用此代码作为重置按钮:$("button").click(function() { $("#mySelect").val([]); });
  • @abcd 按照@Andreas 所说的去做
  • @Andreas 我之前试过,但是一旦我点击重置按钮,product 的值仍然像这样:prnt.sc/db4285
  • @Anant 我之前试过,但是一旦我点击重置按钮,product 的值仍然像:prnt.sc/db4285

标签: javascript php jquery html css


【解决方案1】:
<input type="reset" class="btn btn-large btn-primary" formnovalidate="formnovalidate" value="RESET"/>

试试这个代码重置按钮

【讨论】:

  • 我之前尝试过,它会解决当前的问题,但会产生另一个问题,即一旦我点击重置按钮,产品值仍将保持原样:prnt.sc/db4285
【解决方案2】:

因为你动态插入了一些html元素,所以仅仅一个input标签类型为reset并不能解决你的问题,当你点击重置输入按钮时,你还需要注册一个监听器来移除这些额外的元素。

将您的重置button 标记替换为以下HTML input 标记,并在您的脚本中将您的重置代码替换为以下脚本代码。

HTML:

<input type="reset" class="btn btn-large btn-primary" id='button_reset' formnovalidate="formnovalidate" value="RESET"/>

脚本:

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

希望这能解决您的问题。

【讨论】:

  • selectgetProductDetail函数中属性multiple的值错误,multiple的值应该是falsetrue,它的类型是布尔值。跨度>
  • @abcd 你能提供一个 jsfiddle 或 codepen 链接,以便我们看看那里发生了什么吗?
  • @abcd 实际上当你点击RESET按钮时选项已经被移除了,但是你实现的多个选项的视图是通过一些div标签,而不是原生的select标签,所以当点击RESET你应该删除那些额外的div标签,就像上面那样做,我更新了。
  • 我更新了上面的代码,这应该修复Order Number被选中但Product在上一个版本中不能再次被选中。
  • 一旦我们选择Designer 并点击reset 按钮它就不起作用......
【解决方案3】:

将按钮类型设为“按钮”。试试这个..

 <button type="button" onClick="resetSelect()" formnovalidate="formnovalidate" class="btn btn-large btn-primary">RESET</button>

然后在脚本中:

<script type="text/javascript">
  function resetSelect() {
  $("#mySelect").fSelect("reload");
   }
</script>

【讨论】:

  • 您是否包含 onClick="resetSelect()" ??
猜你喜欢
  • 1970-01-01
  • 2015-03-03
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多