2010-09-23 15 views
1

Je suis en train de soumettre un formulaire à un autre endroit en fonction de la forme (de deux) champs ont été déposés dansJquery - opérateurs instruction if

Il travail lorsque les deux champs ont une valeur, mais quand seulement. un si le champ a une valeur qu'il soumet toujours aux fournisseurs/catégorie/URL. Voici mon code.

$('#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; 
}); 

Toute aide serait appréciée

+0

Je pense que vous ne comprenez pas le && (AND) et || (OR) opérateurs . && s'exécute si les deux instructions sont vraies. || s'exécute quand une ou les deux déclarations sont vraies. Si un champ est laissé vide, le second si (fournisseurs/catégorie) sera toujours exécuté. En fait, la troisième fois, si jamais ne courra jamais. – Tim

+0

votre droit, je n'ai pas entièrement compris ce que le || l'opérateur a fait. Y at-il un moyen de faire ce travail? – James

+0

btw vous pouvez vérifier si la valeur catVal ou keywordVal est définie, alors vous ne devez pas obtenir $ ('# category'). Val() ou $ ('# keywords'). Val() dans chaque instruction if. btw ne pas oublier de fermer ce catVal = $ ('# category'). val() avec un; – Tim

Répondre

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

Supprimer le deuxième contrôle sur les deux autres si:

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

Fondamentalement, il n'y a pas de différence entre

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

et

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

Ainsi, si au moins un champ contient une valeur, le premier if est exécuté.

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

je serais probablement faire beaucoup plus concise comme ceci:

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;