[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
billaki84
Δημοσιεύσεις: 38
Εγγραφή: 28 Μαρ 2011 15:45

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από billaki84 » 13 Απρ 2012 12:53

Καλημέρα.
Εχω φτιάξει μια συνάρτηση για να μετράω την ακρίβεια των πλήκτρων που εισάγω σε ένα textbox. Η λογική της συνάρτησης είναι να πληκτρολογώ/δέχεται το textbox συγκεκριμένους χαρακτήρες, οι οποίοι υπάρχουν σε ένα δεύτερο textbox. Σκεφτείτε ότι γίνεται μια αντιγραφή (πληκτρολογώ εγώ στην ουσία) του περιεχόμενου του textbox2 στο textbox1. Ο παρακάτω κώδικας δουλεύει εν μέρη. Ενώ υπάρχει περιορισμός να σταματάει η μέτρηση στο 0, για να μην παίρνω αρνητικές τιμές, ναι μεν σταματάει στο 0 αλλά συνεχίζει να παίρνει αρνητικές τιμές (χωρίς να τις δείχνει). Το αποτέλεσμα είναι ότι αν πατήσω πολλές φορές λάθος πλήκτρο από αυτό που πρέπει να πατήσω και η μέτρηση φτάσει στο 0, και συνεχίζει να παίρνει αρνητικές τιμές (άσχετα που δεν θα φαίνονται), πατώντας στη συνέχεια το σωστό δεν θα παίρνω μετρήσεις μέχρι να επανέλθει η τιμή άνω του 0.

Αυτό που έχω σκεφτεί είναι να βάλω στην if ένα περιορισμό, δηλαδή αν η ακρίβεια φτάσει στο 50% τότε να υπάρχει ένας μετρητής ο οποίος να μειώνεται κατά 1. Αρα για να φτάσει στο 0, θα πρέπει ο χρήστης να πατήσει πολλές φορές λάθος πλήκτρο. Από την άλλη δεν ξέρω όμως αν θα παίρνω σωστές μετρήσεις. Στην ουσία θέλω ο μετρητής να επιβραδύνει όσο μειώνεται και ποτέ να μην παίρνει αρνητικές τιμές.
Υπάρχει κάτι που να μπορώ να κάνω; Μια διαφορετική άποψη/ σκέψη.

Κώδικας: Επιλογή όλων

$(function () {
    $('.textarea').keyup(checkSpeed);
});

var sumKeys = 0;
var accuracy = 100;
var incorrect = 0;
var correct = 0;

function checkSpeed(event) {
var code = event.which ? event.which : event.keyCode;
var actuelKey = String.fromCharCode(code); 
var TestVar = document.forms["form_1"].askiseis.value; 
var sumCharsTextbox1 = TestVar.length; 
var stoixeia = document.forms["form_2"].stoixeia.value + actuelKey;
var sumCharsTextbox2 = stoixeia.length-1; 
	

	
        if(stoixeia != TestVar){
	 	
	   sumKeys++; 
	   incorrect = sumKeys - sumCharsTextbox2; 
	   correct = sumCharsTextbox2 - incorrect;
	   totalwords = correct + incorrect;   
	    
	    accuracy = (correct / totalwords ) * 100;
            accuracy *= 10;
            accuracy = Math.round(accuracy);
            accuracy /= 10;
        
		
	if(totalwords == 0){

            accuracy = 100;
        }

        if&#40;accuracy < 0&#41;&#123;

	    accuracy = 0;
	&#125;
	 
	    $&#40;'#KPC'&#41;.html&#40;accuracy&#41;; 
	 
	&#125; 
	    
&#125;	
Τελευταία επεξεργασία από το μέλος billaki84 την 23 Απρ 2012 18:52, έχει επεξεργασθεί 2 φορές συνολικά.

sibas
Honorary Member
Δημοσιεύσεις: 1853
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από sibas » 14 Απρ 2012 06:45

Sorry αλλά δεν κατέχω και πολύ από js, ωστόσο δεν κατάλαβα το τι κάνει αυτό το script ή το τι θέλεις να πετύχεις..
Σαν keylogger μου μοιάζει!

Άβαταρ μέλους
billaki84
Δημοσιεύσεις: 38
Εγγραφή: 28 Μαρ 2011 15:45

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από billaki84 » 14 Απρ 2012 12:36

sibas έγραψε:Sorry αλλά δεν κατέχω και πολύ από js, ωστόσο δεν κατάλαβα το τι κάνει αυτό το script ή το τι θέλεις να πετύχεις..
Σαν keylogger μου μοιάζει!
Μετράς την ακρίβεια των πλήκτρων που πατάς. Οπως προανέφερα υπάρχουν δύο textbox. Στο ένα φορτώνονται κάποιοι χαρακτήρες μέσω ενός dropdown, και στο δεύτερο πρέπει να πατάς τους χαρακτήρες που βλέπεις από το άλλο. Οι δηλώσεις actuelKey, TestVar κτλ, χρησιμοποιούνται για να γίνεται αναγνώριση των χαρακτήρων που φορτώνονται στο textbox, ώστε να επιτρέπονται μόνο αυτοι να μπουν και στο αλλο.
Οπότε άσχετα αν επιτρέπονται και μόνο συγκεκριμένοι χαρακτήρες κάθε φορά, ο χρήστης θα κάνει κάποια λάθη σίγουρα. Εγω μετράω το κατα πόσο υπάρχει ακρίβεια ή όχι κατά την πληκτρολόγηση με τη συνάρτηση αυτή.

Άβαταρ μέλους
billaki84
Δημοσιεύσεις: 38
Εγγραφή: 28 Μαρ 2011 15:45

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από billaki84 » 14 Απρ 2012 12:53

Τη διόρθωσα λίγο.
Δουλεύει αλλά έχω δύο προβλήματα.
1) όταν ξεκινάω πληκτρολογώντας λάθος χαρακτήρα στο textbox θέλω να ξεξινάει με 0% και όχι με 100% όπως τώρα, και στη συνέχεια να αυξάνει/μειώνει ανάλογα τον χαρακτήρα που πατάω.
2) αν και ο μετρητής σταματάει στο 0 όταν ο χρήστης πατήσει συνεχόμενα πολλές φορές λάθος χαρακτήρα, συνεχίζει και παίρνει αρνητικές τιμές χωρίς να τις δείχνει.

Cretan1986
Δημοσιεύσεις: 79
Εγγραφή: 14 Απρ 2012 13:57

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από Cretan1986 » 14 Απρ 2012 14:09

Θα μπορούσες να φτιάξεις ένα demo στο http://jsfiddle.net/ ;

Άβαταρ μέλους
billaki84
Δημοσιεύσεις: 38
Εγγραφή: 28 Μαρ 2011 15:45

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από billaki84 » 14 Απρ 2012 15:20

Cretan1986 έγραψε:Θα μπορούσες να φτιάξεις ένα demo στο http://jsfiddle.net/ ;
Φυσικά και μπορώ. Απλά δεν ξέρω πως δουλεύει. Περνάω τον κώδικα και απλά το στέλνω το λινκ; Χρειάζεται να κάνω λογαριασμό ή κάπως να το αποθηκεύσω:

Άβαταρ μέλους
billaki84
Δημοσιεύσεις: 38
Εγγραφή: 28 Μαρ 2011 15:45

[SOLVED]Συνάρτηση μέτρησης ακρίβειας πλήκτρων!

Δημοσίευση από billaki84 » 14 Απρ 2012 20:53

Παραθέτω τη λύση:


Κώδικας: Επιλογή όλων

$&#40;function &#40;&#41; &#123;
    $&#40;'.textarea'&#41;.keyup&#40;checkSpeed&#41;;
&#125;&#41;;

var Keys = 0;
var errorsCount = 1;
var incorrect = 0;
var correct = 0;
var accuracy = 100;

function checkSpeed&#40;event&#41; &#123;
	
    var code = event.which ? event.which &#58; event.keyCode;
    var actuelKey = String.fromCharCode&#40;code&#41;;                                            
    var TestVar = document.forms&#91;"form_1"&#93;.askiseis.value;                               
    var sumCharsTextbox1 = TestVar.length;                                                
    var stoixeia = document.forms&#91;"form_2"&#93;.stoixeia.value + actuelKey;                    
    var sumCharsTextbox2 = stoixeia.length;                                            
	

	 currentTime = new Date&#40;&#41;.getTime&#40;&#41;;  
   	 Keys++;
	 
	 
	 if&#40;stoixeia != TestVar&#41;&#123;
		 
        errorsCount++;
	incorrect = errorsCount - sumCharsTextbox2; 
	correct = Keys - incorrect; 
	totalwords = correct + incorrect;  
		
	accuracy = &#40;correct / totalwords &#41; * 100;
        accuracy *= 10;
        accuracy = Math.round&#40;accuracy&#41;;
        accuracy /= 10;
		
		
		if&#40;totalwords == 0&#41;&#123;  
			accuracy = 100;
		&#125;
				
        if&#40;accuracy < 0&#41;&#123;
			accuracy = 0;
		&#125;
		
	    $&#40;'#accuracyValue'&#41;.html&#40;accuracy&#41;; 
	 
	 &#125; 

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες