2016-04-22 19 views
1

Ich versuche zu verhindern, dass ein Klickereignis an ein html-Element angehängt wird, wenn die Zeichenlänge größer als 10 ist, aber ich glaube, dass ich einen Syntaxfehler bekomme. t herausfinden.Zurückgegebene Textlänge eines Elements (jquery)

(Nur ein paar weitere Informationen. Dies ist ein optionales Taschenrechner-Projekt, und es gibt wahrscheinlich viel elegantere Möglichkeiten, dies zu tun, aber wir sollten es ohne tiefgreifendes JS/jQuery-Lernen versuchen.) Hier ist meine jsFiddle, die ich verwende, um Code zu testen, bevor er in meine Dateien eingefügt wird.

Ich dachte, der einfachste Weg wäre, jede Zahl in ein Element (Screen-Relay) zu schieben, dann schnappt man sich das Ganze und wendet eval() an. Ich versuche, die Konsole zu melden, wenn sie das Zeichenlimit auf mehr als 10 setzt, aber ich empfange nichts. Danke für die Hinweise! (edit: da Sitten)

https://jsfiddle.net/vx09p7kk/

// Evaluate value of screen 

$("#equals").click(function() { 
    var x = ($("#screen-relay").text()); 
    var finalValue = eval(x); 

    console.log(finalValue); 

    $("#output").html(finalValue); 
}); 

// Clear Function 

$("#clear").click(function() { 
    ($("#screen-relay, #output").text("")); 
}); 

// Char Limit Function 

var CharCount = ($("#screen-relay").text().length); 
if(CharCount > 10) { 
    console.log(bam) 
}; 
+0

Bildschirm-Relais ist Eingabefeld? –

+1

warum nicht maxlength attr verwenden? – guradio

+1

CharCount wird nur einmal am Anfang ausgewertet. Legen Sie es in Ihren Klick-Handler. –

Antwort

0

Könnten Sie bitte einen Blick auf unten aktualisiert Geige Link nehmen:

https://jsfiddle.net/vx09p7kk/4/

Ich habe einfach einen Zähler totalCharEntered hinzugefügt, wird bei jedem Einfügen von Zeichen inkrementiert und wird gelöscht, wenn wir auf "Löschen" klicken:

// Buttons 
var totalCharEntered = 0; 
$("#one").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>1</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 
$("#two").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>2</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 
$("#plus").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>+</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 

// Clear Function 

$("#clear").click(function() { 
    ($("#screen-relay, #output").text("")); 
    totalCharEntered = 0; 
}); 

Ich denke, es wird Ihnen ein wenig helfen.

+0

Brilliant, ich habe das in einer Array-Schleife gesehen, aber hatte nicht daran gedacht. Vielen Dank. edit: Wenn einer der anderen Mitwirkenden zurückschaut, danke auch, ich habe alle deine Vorschläge versucht. – Keenanp

+0

danke @Keenanp ... ':)'! – vijayP

Verwandte Themen