2012-07-17 187 views
0

我有一個jQuery的功能,在提交事件產生url.If一個沒有定義的參數,增添網址應跳過什麼是正確的語法jQuery中

 var category  =$("#prod_category").val(); 
     var group   =$("#prod_group") 
     window.location.href = "/page/" + 
      **//add to url if category is definned** 
     encodeURI(category) + "/" + 
      **//add to url if group is definned**  
     encodeURI(group) + "/" + 
+0

值得關注的是你正在尋找香草JavaScript語法 - 沒有必要使用jQuery作爲'if's tatement。 – 2012-07-17 10:17:07

回答

4

你可以簡單的狀態if (category)。如果category的值長度大於零,則將返回true

var url = "/page/"; 
if (category){ 
    url = url + encodeURI(category) + "/"; 
} 
if (group){ 
    url = url + encodeURI(group) + "/"; 
} 

編輯:當設定值以categorygroup確保你修剪該元件可以含有任何空白。例如:

var category = $.trim($("#prod_category").val()); 
+0

在元素確實存在的表單元素中。這就是爲什麼簡單的檢查是不夠的。在這種情況下,jQuery將返回空值,如果它的空間,那麼你會怎麼做? – 2012-07-17 11:13:17

+0

@ZahidRiaz我已經看到你的答案,我明白你在說什麼,但我不認爲這是'修剪'的正確位置。對象'類別'應該是空白或正確的值。它被稱爲'category',而不是'prod_category_val'。因此它應該是一個已經驗證過的類別名稱。在if語句之前應該進行裁剪。我會編輯我的回答,提到這一點,但我不相信它值得一個downvote。 – Curt 2012-07-17 11:20:31

+0

做編輯答案。我會撤銷我的選擇。 – 2012-07-17 11:22:36

0

使用

if($.trim(category) != ''){ 
} 
if($.trim(group) != ''){ 
} 
1

嘗試:

var category =$.trim($("#prod_category").val()); 
var group =$.trim($("#prod_group").val()); 
var urlVal = "/page/"; 
if(category !== "") { 
    urlVal += encodeURI(category); 
} 
if(group !== "") { 
urlVal += encodeURI(group); 
} 
window.location.href = urlVal; 
2

您可以通過這樣做$ .grep:

var category = $.trim($("#prod_category").val()); 
var group = $.trim($("#prod_group").val()); 
window.location.href = '/page/' + $.grep([category, group], function(s) { return s != null && s.length }).join('/');