2013-07-24 88 views
0

我正在開發一個搜索表單。表單Get方法:防止在查詢字符串中提交空字段

搜索表單有2個部分, 首次簡單搜索,帶有一些選擇,輸入和提交按鈕。 第二個包含許多選擇,複選框,收音機,輸入和提交按鈕。

我正在使用GET方法,因爲我想要查詢字符串中的所有字段。 example.com/cars-parts/cars-for-sale/?country=205 &城市= 19 & cars_category = 462

但問題是,如果用戶不選擇某些字段(因爲他DONOT想申請這個標準)很多空字段,並使查詢字符串太長。

問題:

我想刪除之前的所有空字段表單提交(禁用或任何需要),使查詢字符串包括具有價值僅領域。

注意:只建議使用Form Get方法。在過去我使用POST方法並沒有值傳遞查詢字符串,但現在我想查詢字符串中的值。

謝謝您的閱讀。

+1

嗨雅阿薩德 - 這實際上是一個現有的問題的副本,但如果它仍然對你有任何用處,我只是發佈了一個不同的選項在原始[在這裏](http://stackoverflow.com/questions/5926673/how-can-i-remove-empty-fields-from-my-form-in-the-querystring/30009333#30009333)。 簡短版本是(在Apache上)使用mod-rewrite規則可能是一個更好的解決方案,如果你想確保當用戶不使用Javascript時能正確刪除這些字段。 – Hobbes

+0

是的,它有幫助,感謝您的回答 –

回答

1

您可以綁定表單提交事件上的函數,並使用空值刪除/禁用所有輸入。就像這樣:

your_form.submit(function() { 
    your_form.find('input').each(function() { 
     var input = $(this); 
     if (!input.val()) { 
      input.remove(); // or input.prop('disabled', true); 
     } 
    }); 
}); 
+0

是的,你是對的,但它只會刪除輸入,因爲我說問題可以有選擇,複選框,收音機等。 –

+0

目前寫一個,$('#frm_search')。submit (function)(){(this).find(':input [value =「」]')。prop('disabled',true); $(this).find('select')。not(「 :選擇了「)丙( '禁用',TRUE); \t \t \t 返回\t真; \t \t});。 –

0

我認爲你必須包括到.get()方法之前,驗證所有這些領域,並且不包括在.get()方法沒有值的輸入。

1

請嘗試使用您的$(function(){ ... })部分如下:

$('form').submit(function(){$('input[value=]',this).remove();return true;}) 

這將刪除您形式的任何空input元素提交之前。你當然可以修改它,以包括非選擇的選擇框等

+0

這不會刪除_empty_'input'元素,但會刪除_do沒有'value =「...」'set_的輸入元素。 –

+0

奎因是絕對正確的 - 有一段時間沒有在這裏... 但是,這*將*工作: '$('form')。提交(function(){('input')。each(function(){with($(this))if(val()=='')remove();}) })' – cars10m

+0

Oooops,當然,上述評論本質上是Magus的答案 - 抱歉重複! – cars10m

相關問題