2009-06-03 7 views
0

J'essaie d'utiliser le plugin typeWatch pour jQuery. J'ai ce javascript:Comment accéder à un texte de champ de saisie avec jQuery?

<script type="text/javascript"> 
$(document).ready(function() { 
    var options = { 
     callback: function() { alert("a-ok! " + $(this).text); }, 
     wait: 333, 
     highlight: true, 
     captureLength: 1 
    } 

    $("#customer").typeWatch(options); 
}); 
</script> 

Et de mon point de vue HTML a ceci: dans la zone de texte

Method B: <%= Html.TextBox("customer") %> 

Avec ce test, si je tape « ABC », j'attends une alerte au popup avec un » -ok! ABC ". Au lieu de cela ce qui suit apparaît ...

a-ok! function (F) { 
    if (typeof F !== "object" && F != null) { 
     return this.empty().append((this[0] && this[0].ownerDocument || 
       document).createTextNode(F)); 
    } 
    var E = ""; 
    o.each(F || this, function() {o.each(this.childNodes, function() { 
      if (this.nodeType != 8) { 
      E += this.nodeType != 1 ? this.nodeValue : o.fn.text([this]);}});}); 
    return E; 
} 

J'ai essayé de changer le $ (ce) .text à .VAL, et je l'ai également essayé référencer le champ d'entrée plus directement $ (« # client ») mais ils donnent des résultats similaires. Comment puis-je accéder uniquement au texte entré?

+0

La raison pour laquelle vous récupérez une représentation textuelle de la fonction est que vous n'invoquez pas la fonction à l'aide de parenthèses ... le texte doit être le texte ***() *** – cgp

+0

Je ne peux pas répondre :( – cgp

Répondre

1

Vous cherchez le code de la version 2.0 typeWatch J'ai trouvé ceci:

function checkElement(timer, override) { 
     var elTxt = jQuery(timer.el).val(); <----------- !!! this... 

     // Fire if text > options.captureLength AND text != saved txt OR if override AND text > options.captureLength 
     if ((elTxt.length > options.captureLength && elTxt.toUpperCase() != timer.text) 
     || (override && elTxt.length > options.captureLength)) { 
      timer.text = elTxt.toUpperCase(); 
      timer.cb(elTxt); <-------------- !!! ...goes here. 
     } 
    }; 

timer.cb est le rappel que vous définissez dans les options. Donc, vous ajoutez simplement un paramètre dans cette fonction de rappel que vous utilisez et ce paramètre sera le texte de l'entrée.

+0

doux! Merci! J'ai continué à essayer différentes variantes de l'autre réponse puisque 4 personnes l'ont surpassée rapidement mais rien ne fonctionnait. Cela a fonctionné comme un charme. –

5

Vous devez utiliser la fonction val() sur la zone de texte:

$(this).val(); 
+0

Je suppose que c'est généralement la bonne réponse, mais je ne pouvais pas le faire fonctionner pour une raison quelconque.Comme Lucas a résolu mon problème, il obtient la réponse, mais +1 à cela aussi bien que son probablement la bonne réponse 99% –

+0

Vous aviez besoin du spécialiste de Lucas the typeWatch pour ce travail;). J'espère que vous vous souvenez de mon -broader- tip: $ (elem) .val() pas .text! (fonctionne pour chaque champ d'entrée html) hehe – Ropstah

Questions connexes