2012-07-17 135 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('/');