如何在GET查询中不发送空的输入值


How not to send empty input value in GET-query

我有一个类似的表单

<form action="index.php" method="get">
  <input type="hidden" name="id" value="1">
  <input type="hidden" name="order_by" value="">
  <button type="submit">Submit</button>
</form>

它有一些jQuery处理程序来填充"order_by"字段。如果我提交的表格中有空的"order_by",我会得到这样的地址:index.php?id=1&order_by=

如果"order_by"为空,那么在提交表格后,我能做的最好的方法是什么:index.php?id=1

您可以禁用空字段,这样它们就不会被添加为数据

$('form').submit(function(e){
    var emptyinputs = $(this).find('input').filter(function(){
        return !$.trim(this.value).length;  // get all empty fields
    }).prop('disabled',true);    
});

在php中,您可以这样做

if(!isset($_GET['order_by']) || !$_GET['order_by'])
    return 'error msg';

if(empty($_GET['order_by']))
    return 'error msg';

像这个一样更改html

   <form action="index.php" method="get" onsubmit="return valid()">
  <input type="hidden" name="id" value="1">
  <input type="hidden" name="order_by" id="order_by" value="">
  <button type="submit">Submit</button>
  </form>

javascript:

  function valid(){
   if(!$('#order_by').val()){
       alert("Order by not found");
       return false;
    }
   return true;
 }
$('form#formID').submit(function(e){
     var emptyinputs = $(this).find('select').filter(function(){
     return !$.trim(this.value).length;  
    }).prop('disabled',true);    
     var emptyinputs = $(this).find('input').filter(function(){
     return !$.trim(this.value).length;  
    }).prop('disabled',true);    
});

您可以禁用空字段(选择和输入),这样它们就不会作为数据添加,也可以禁用自定义表单id。