2010-09-23 41 views
1

我试图提交表单到这取决于(二)形式领域都已经立案的不同位置jQuery的 - 运营商在if语句

当两个领域都有价值,但只有当它工作。如果字段有一个值,它总是提交给供应商/类别/ URL。这是我的代码。

$('#suppliersForm').submit(function() { 

catVal = $('#category').val() 
keywordVal = $('#keywords').val() 

if($('#category').val() && $('#keywords').val()) 
{ 
var searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/searchresults/' + catVal + '/' + keywordVal 
window.location.replace(searchString); 
} 
else if($('#category').val() || $('#keywords').val()) 
{ 
var searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/category/' + catVal 
window.location.replace(searchString); 
} 
else if($('#keywords').val() || $('#category').val()) 
{ 
var searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/keywords/' + keywordVal 
window.location.replace(searchString); 
} 
return false; 
}); 

任何帮助,将理解

+0

我想你不明白的&&(AND)和||(OR)运算符。 &&在两个语句都为真时运行。 ||当一个或两个陈述为真时运行。如果一个字段留空,第二个字段如果(供应商/类别)将始终运行。事实上,如果永远不会运行,其他人的生命。 – Tim 2010-09-23 16:21:19

+0

你的权利,我没有完全理解||运营商确实。有没有办法做到这一点? – James 2010-09-23 16:23:20

+0

btw您可以检查是否设置了值catVal或keywordVal,那么您不必在每个if语句中获取$('#category')。val()或$('#keywords').val()。 btw不要忘记关闭这个catVal = $('#category')。val()with a; – Tim 2010-09-23 16:24:01

回答

1
$('#suppliersForm').submit(function() { 

var catVal = $('#category').val(); 
var keywordVal = $('#keywords').val(); 
var searchString = ""; 

if(catVal != "" && keywordVal !="") 
{ 
    searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/searchresults/' + catVal + '/' + keywordVal; 
} 
else if(catVal != "" ) 
{ 
    searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/category/' + catVal; 
} 
else if(keywordVal != "") 
{ 
    searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/keywords/' + keywordVal; 
} 
window.location.replace(searchString); 
return false; 
}); 
0

卸下第二检查在两个否则如果:

else if($('#category').val() || $('#keywords').val()) --> else if($('#category').val()) 
else if($('#keywords').val() || $('#category').val()) --> else if($('#keywords').val()) 
0

基本上没有

else if($('#category').val() || $('#keywords').val()) 

else if($('#keywords').val() || $('#category').val()) 
之间没有差异

因此,如果至少有一个字段包含某个值,则第一个字段将被执行。

0
jQuery('#suppliersForm').click(function(event){  

    var searchString = ''; 
    var catVal = $('#category').val(); 
    var keywordVal = $('#keywords').val(); 



    if(catVal.length > 0 && keywordVal.length > 0){ 
     searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/searchresults/' + catVal + '/' + keywordVal; 
    } else if(catVal.length > 0) { 
     searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/category/' + catVal; 
    } else if(keywordVal.length > 0 ) { 
     searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/keywords/' + keywordVal 
    } else { 
     alert('Please enter at least on value'); 
    } 


    window.location.replace(searchString); 

}); 

http://jsfiddle.net/g8AUZ/

0

我可能使它更简洁这样的:

var catVal = $('#category').val() 
, keywordVal = $('#keywords').val() 
, searchString = 'http://<cfoutput>#cgi.server_name#</cfoutput>/suppliers/'; 

if(catVal && keywordVal) 
    searchString += ('searchresults/' + catVal + '/' + keywordVal); 
else if(catVal) 
    searchString += ('category/' + catVal); 
else if(keywordVal) 
    searchString += ('keyword/' + keywordVal); 
else return; 

window.location.replace(searchString); 
return false;