2

I have a form like this

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

It has some jQuery handlers to fill in "order_by" field. If I submit this form with empty "order_by" filed, I get an address like this: index.php?id=1&order_by=

What is the best way I can do to get following address after form submission if the "order_by" is empty: index.php?id=1 ?

Bolli
  • 4,974
  • 6
  • 31
  • 47
femalemoustache
  • 561
  • 6
  • 17

3 Answers3

10

you can disable empty fields so they don't get added as data

$('form').submit(function(e){
    var emptyinputs = $(this).find('input').filter(function(){
        return !$.trim(this.value).length;  // get all empty fields
    }).prop('disabled',true);    
});
wirey00
  • 33,517
  • 7
  • 54
  • 65
  • 2
    This is the only answer so far that truly answers the OP's question, which was how to not set the empty values in the first place. I had the same problem, where I didn't want the URL to get polluted with optional fields from a search form. This worked like a charm! – CragMonkey Dec 22 '14 at 18:46
1

in php you can do like this

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

or

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

change html like this

   <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;
 }
Man Programmer
  • 5,300
  • 2
  • 21
  • 21
0
$('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);    
});

You can disable empty fields (both select and input) so they don't get added as data, and for a custom form id.

Bagova
  • 161
  • 16