2014-11-05 40 views
0

我正在使用GET方法添加到查詢字符串的表單。如果isset只傳遞GET信息

我遇到了問題。當提交表單時,每個字段都會發送並添加到查詢中,包括沒有值。

例子:

http://web.com/?filter-types=news&filter-document-type=&filter-topics=we-have-a-topic&filter-featured=&filter-rating= 

我不能添加這些到查詢字符串,如果他們沒有設置? !isset()還是有另一種方法來做到這一點?

+1

你爲什麼那麼在意?你想對下一頁的數據做什麼? – baao 2014-11-05 01:03:50

+1

您可以將JavaScript處理程序添加到onSubmit事件,並在提交表單之前使用它來禁用任何空字段。已禁用的字段未提交。 – 2014-11-05 01:12:29

回答

0

所有這些鍵顯示在查詢字符串中的原因是因爲它們作爲輸入存在於表單中。如果您不希望他們發送,請將其從表單中移除,或者至少爲其提供一些有意義的默認設置。

1

你也可以通過javascript來操作表單輸入,只是一個Mike在評論中說過,在提交時檢查字段,如果是空的,禁用它們,這樣它們就不會被提交。

這僅僅是基本的想法(用jQuery):

<form method="GET" id="form_inputs"> 
    <input type="text" name="field1" value="field_with_value" /><br/> 
    <input type="text" name="field2" value="" /><br/><!-- empty field --> 
    <input type="text" name="field3" value="field_with_value" /><br/> 
    <input type="submit" name="submit_form" id="submit_form" value="Submit" /> 
</form> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
$('input[name="submit_form"]').on('click', function(e){ 
    e.preventDefault(); 
    $('form').children().each(function(i, e){ 
     if($(e).is('input') && $(this).val() == '') { 
      $(this).prop('disabled', true); 
      // or $(this).attr('name', ''); 
     } 
    }); 
    $('form').submit(); 
}); 
</script> 

或者,如果你不想使用jquery在所有:

document.getElementById('submit_form').addEventListener('click', function(e){ 
    e.preventDefault(); 
    var children = document.getElementById('form_inputs').childNodes; 
    for(i = 0; i < children.length; i++) { 
     if(children[i].type == 'text' && children[i].value == '') { 
      children[i].disabled = true; 
     } 
    } 
    document.getElementById('form_inputs').submit(); 
}); 
0

我猜你正在尋找一個條件

if (!empty($_POST['var'])) { 

} 

if (!isset($_POST['var']) && !empty($_POST['var'])) { 

}