2013-10-25 20 views
1

我有以下簡單的形式:復位和提交表單沒有空值

<select name="category"> 
<option value="">Choose a Category</option> 
<option value="Social">Social</option> 
<option value="Media">Media</option> 
</select> 

我用下面的jQuery重置表單:

$(document).ready(function(){ 
$(document).on('click', '.test', function(){ 
    $('select[name*="category"]').val(''); 
    $('form').submit(); 
}); 
}); 

的問題是,形式正在提交使用空的查詢字符串/?category=有沒有辦法讓它提交沒有這些空查詢字符串的表單只是爲了重置它?

+1

不要調用'.submit'? – tymeJV

+0

重新加載頁面?儘管我沒有看到提交沒有值的表單的要點。 –

+0

關鍵是我想讓用戶刪除篩選類別以再次查看所有結果 –

回答

0

我想提交您的代碼不需要只是使用下列內容:

$(document).ready(function() { 
    $(document).on('click', '.test', function() { 
     $('select[name*="category"]').val(''); 
    }); 
}); 
+0

我剛剛編輯 – Shamse

+0

我實際上想提交表格,不只是重置 –

+0

首先提交表格,然後休息 – Shamse

0

我建議刪除該控件本身:

$(document).ready(function() { 
    $(document).on('click', '.test', function() { 
     $('select[name*="category"]').remove(); 
     $('form').submit(); 
    }); 
}); 
+0

正如你所說我有其他參數,我需要但是刪除控件並不能解決問題,因爲它也會在url的末尾提交'?'......有沒有辦法阻止問號被提交? –

+0

如果是這樣,請使用第二個選項。刪除控件不會將其作爲參數發送(因爲它不會存在於提交的表單中) – Sych

+0

現在問號仍然存在,因此網址現在爲:'site.com/?'有一種方法可以刪除這個'?'在url結尾處? –

0

試試這個

$(document).ready(function() { 
$('select[name*="category"]').val(''); 
    $(document).on('click', '.test', function() { 
    $('select[name*="category"]').val(''); 
    }); 
}); 
0

如果你真的想重置整個表單,然後使用基本的JS .reset()。在代碼中,您可以通過更換整個click功能做到這一點:

$('form')[0].reset(); 

這將選定的jQuery對象轉換爲HTML節點的參考,這樣就可以使用它的JS reset功能。這將重置窗體中的所有字段爲其默認值。

注:技術上$('form')[0]是「一切形式的頁面上的數組中的第一個對象」,所以,如果你有一個以上的表格,你需要更具體,以確保你重置預期的形式。

+0

這將重置表單,但不提交它...我需要這兩個和提交的URL不應該包含空的查詢字符串...不能只是重新加載,因爲我會失去我需要的網址中的其他參數 –

+0

@MichaelSamuel - 讓我看看,如果我明白了。 。 。你希望下拉列表重置,而「category」參數不是URL字符串的一部分,但其他表單字段值應該仍然在URL中?或者你是說你想讓所有表單字段超出URL和任何其他(非表單)參數,仍然是URL的一部分? – talemyn

+0

第二個選項:)所有表單字段被重置(我在這裏提到的選擇,但有幾個表單域),不要將它們追加到表單時提交...我有點能夠實現它通過刪除'name'屬性從選擇,但現在'?'是越來越提交...有沒有辦法阻止它被附加..我讀它是'get'方法的結構,不能被刪除 –

0

試試這個:

$('#frm').submit(function(form){ 
      $('#frm').find('[name="category"]').remove(); 
      form.submit(); 
     }); 

形式在此期間將刪除查詢參數提交。

<html> 
<head> 
<script type='text/javascript' src='file:///D:/bootstrap/js/jquery-ls.js'></script> 
<body> 
<form id='frm' method='get' action=''> 
<select name="category" > 
<option value="">Choose a Category</option> 
<option value="Social">Social</option> 
<option value="Media">Media</option> 
</select> 

<input class='test' type='submit' value='click' /> 
</form> 

<script> 
$(document).ready(function(){ 

    $(document).on('click','.test',function(){ 
     var data=$('#frm').serializeArray(); 
     //alert(data[0]['value']); 
     console.log(data[0]); 
     if(data[0]['value']){ 
     // alert('t'); 
      $('frm').submit(); 
     } 
     else{ 
     $('#frm')[0].reset(); 

     $('#frm').find('[name="category"]').remove(); 
    } 
    }); 

}); 
</script> 
</body> 
+0

我現在正在做這個,但是有沒有辦法去除附加的'?'? –

+0

@MichaelSamuel如果我們刪除所有表單域,那麼將不會有?也。我測試本地和張貼.. – fewtalks

+0

只是在本地測試本代碼單獨仍然是?正在追加:) –