2010-02-28 11 views
0

J'essaie de faire la prochaine chose dans Jquery. J'ai 2 comboboxes et je veux m'assurer que leurs valeurs sélectionnées sont identiques. Si l'utilisateur choisit une valeur dans l'un des combos comme l'autre, je veux alerter "op invalide" et mettre la valeur combo sélectionnée à sa valeur précédente. donc j'écrit:Méthode live jquery en interaction combobox

$("#SelectGroupMargin").live("onchange", function() { 
    // save the value before the change in case the change is invalid 
    var valBeforeChange = $("#SelectGroupMargin").val(); 
    var currentLimitedRuleVal = $("#SelectGroup").val(); 
    var newFillerRule= $(this).val(); 

    // check that the new value does not colide with the value of the limited rule 
    // if it does colide alert the user and return to the former value 
    if (currentLimitedRuleVal == newFillerRule) { 
    alert("invalid op"); 
    $("#SelectGroupMargin").text(valBeforeChange); 
    } 
}); 

mais j'ai quelques problèmes: 1) onchange ne répond pas - il suffit de cliquer et focusOut 2) newFillerRule toujours identique à valBeforeChange

Avez-vous une meilleure idée/plus court tout conseil merci

+0

Je pense qu'une grammaire et une orthographe acceptables pourraient vous aider un peu plus. Nous apprécions hautement les questions bien formées ici. –

+0

comment puis-je former le code? – ronk

+0

4 espaces. http://stackoverflow.com/editing-help, mais la FAQ ici ne vous dira pas que les phrases commencent par des majuscules. –

Répondre

1

Essayez d'utiliser change par opposition à onchange dans la méthode live(). De même, si ma mémoire est correcte, jQuery 1.4+ est nécessaire pour utiliser live avec l'événement change car le code a été implémenté uniquement dans 1.4+ pour gérer la délégation de l'événement change.

En comparant la nouvelle valeur sélectionnée à la dernière valeur sélectionnée, vous pouvez stocker la valeur sélectionnée pour $.data() - vous pouvez ensuite comparer la valeur après l'événement change avec la valeur stockée dans $ .cache (où $ .data() stocke des valeurs) et fais le nécessaire. Vous pouvez également l'implémenter en utilisant une fermeture aussi.

+0

ne fonctionne pas avec "changer" – ronk

+1

il fait avec 1.4+ - http://jsbin.com/axope/edit –

+0

Testé, il fonctionne comme prévu concernant votre question. Je regarderais attentivement votre syntaxe, peut-être avez-vous d'autres codes affectant l'échantillon que vous nous avez donné. –

0

$ ("# SelectGroupMargin") est le même que $ (this) dans le contexte de cette fonction. Et utiliser "changer" pour l'appel en direct