2012-12-10 4 views
1

J'ai ce code jQuery:Faire URl réoriente dans une instruction jQuery

jQuery(document).ready(function($) { 
$('#myform').submit(function() { 

    if ($('#myform input').is(':checked')) { 

    } else { 
     //alert('Checkbox is not checked!!'); 
     window.location.replace("http://example.com/product-comparisons/?product-skus=0"); 

    } 

}); 

});

Je veux rediriger vers cette URL:

http://example.com/product-comparisons/?product-skus=0

Si l'utilisateur clique sur la case à cocher sans cochés.

J'ai essayé le code ci-dessus en fonction de cette suggestion: How to redirect to another webpage in JavaScript/jQuery?

Mais ça ne marchera pas. J'apprécierais pour toutes les entrées et suggestions. Je vous remercie!

MISE À JOUR: Ceci est mon code HTML/formulaire:

<form action="/product-comparison/" id="myform"> 
<ul> 
<li> 
<input type="checkbox" name="product-skus[]" value="1" id="mycheckbox"> 
<a href="http://example.com/product/translator/">Translator</a>100<img width="150" height="150" title="View product" style="" alt="View product" class="attachment-thumbnail" src="http://example.com/wp-content/uploads/2012/12/pic1-150x150.jpg"></li> 
<li><input type="checkbox" name="product-skus[]" value="2" id="mycheckbox"> 
<a href="http://example.com/product/arrows/">Arrows</a>120<img width="150" height="150" title="View product" style="" alt="View product" class="attachment-thumbnail" src="http://example.com/wp-content/uploads/2012/12/pic2.jpg"></li></ul> 

<input type="submit" value="Compare"> 

</form> 

Cependant, je crois que mon sélecteur est correct, car ce code de diagnostic (en utilisant des alertes pour vous assurer entonnoirs jQuery à la logique à droite) est parfaitement travail:

jQuery(document).ready(function($) { 
$('#myform').submit(function() { 

    if ($('#myform input').is(':checked')) { 
     alert('Checkbox is checked, do nothing'); 
    } else { 

     alert('Checkbox is not checked!!, do the redirects'); 


    } 

}); 
}); 
+1

Fournir le code html, je pense que le sélecteur n'est pas correct. – SaidbakR

+0

Avez-vous essayé de déboguer le $ ('# myform input'). Is (': checked')? $ ('# myform input') retournera un tableau d'éléments d'entrée, ce qui peut entraîner l'erreur de la dernière fonction (': checked'). –

+0

Il y a une erreur dans la console JS mais je ne peux pas saisir l'erreur exacte après l'envoi du formulaire. est-il un moyen de mettre en pause l'exécution du code? –

Répondre

0

Si vous soumettez votre formulaire, vous soumettez à un autre document. Cela signifie que pour se rendre à un autre endroit que vous pouvez le régler par document.location.replace et annuler la soumission du formulaire (return false; devrait être suffisant)

ou vous manipuler l'action (URL cible) de votre formulaire. Effet secondaire positif serait, que toutes les données tapées dans votre formulaire seraient effectivement soumis dans les deux cas (par défaut et action alternative)

+0

Merci Michel..Actuellement à la fin, je rends la solution un peu plus simple. Je désactive simplement le bouton de soumission si un utilisateur ne vérifie rien sur la case à cocher. Cela empêchera le formulaire d'être soumis.Quoi qu'il en soit, je comprends beaucoup de votre réponse qui me conduit à la bonne résolution du problème. J'ai marqué celui-ci comme la réponse. –

-1

Essayez les solutions suivantes. Ajouter une fausse déclaration après la redirection:

jQuery (document) .ready (function ($) { $ ('# myform') soumettre (function() {

if ($('#myform input').is(':checked')) { 

} else { 
    //alert('Checkbox is not checked!!'); 
    window.location.replace("http://example.com/product-comparisons/?product-skus=0"); 
    return false; //Add this 
} 

}); . });

+1

window.location.replace fonctionne très bien. – Alan

+0

C'est étrange, à la fois window.location.replace et window.location.href ne fonctionne pas. J'utilise Ubuntu OS dans Firefox, Chromium et Chrome. Ils ne fonctionnaient pas tous. Est-ce que quelque chose me manque? –

+0

c'est parce que cette partie de votre code est très bien. Quelque chose d'autre est vicieux, comme votre jQuery (document) .ready ou votre sélecteur est éteint. – Alan