jquery & enter key

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

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

Απάντηση
Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 28 Μαρ 2010 00:05

Κατά την διαδικάσια του debug παρατήρησα σε μια φόρμα το εξής:
αν γράψω κάτι σε ένα textbox και πατήσω enter αντί να πατήσω το κουμπί με το ποντίκι "submit" δεν δουλεύει όπως θα δούλευε σε μια απλή φόρμα σε μια html σελίδα.

Υπάρχει κάτι ώστε να το κάνω να δουλέψει και με το enter key ?

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

$(document).ready(function(){						   		   
	
	$('#submit').click(function() {
		
		//$('#waiting').show(500);
		$('#menu_edit').hide(0);
		$('#message').hide(0);
		
			//gia to checkbox
			if ($('input[type="checkbox"]').is(':checked')) {
					var menu_active = 1;	
				 } else {
				 	var menu_active = 0;
				 }
				 			 
			// fere mou kai to menu_id gia na to pao sto php file kai na kano tous elenxous mou.
			var id = $('#mid').val();					 							 
		  
		$.ajax({
			type : 'POST',
			url : 'functions/menu_edit.php',
			dataType : 'json',
			data: {
				mid : id,
				menu_title : $('#menu_title').val(),
				menu_parent_id  : $('#menu_parent_id').val(),
				menu_description  : $('#menu_description').val(),
				menu_active  : menu_active				
			},
			success : function(data){
				//$('#waiting').hide(500);
				$('#message').removeClass().addClass((data.error === true) ? 'error' : 'success')
					.text(data.msg).show(100);						
				if (data.error === true) {
					$('#menu_edit').show(100);					
				} else if (data.error === false) {
					$('#redirect').show();		
			   }},
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				//$('#waiting').hide(500);
				$('#message').removeClass().addClass('error')
					.text('There was an error.').show(100);
				$('#menu_edit').show(100);
			}
		});
		
		return false;
	});
});
Thanks!
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 28 Μαρ 2010 23:03

Κανείς? :hammer:
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

jquery & enter key

Δημοσίευση από burnmind » 29 Μαρ 2010 18:14

Πολύ βιαστικός είσαι! :P

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

$('#submit').click(function()...
Εδώ του λες ότι όταν κάποιος κάνει click στο κουμπί (?) με id "submit" να εκτελέσει το function που ακολουθεί. Άρα καλά κάνει και δε δουλεύει με το enter.

Νομίζω ότι υπάρχουν 2 (μπορεί και παραπάνω) τρόποι για να το πετύχεις, αλλά αυτή τη στιγμή μου έρχεται μόνο ο ένας. Να ελέγχεις αν πατήθηκε το enter καθώς γράφει ο χρήστης στο textbox και αν ναι να καλέσεις το function που θέλεις.

Παράδειγμα που ξεσήκωσα από ένα παλιό script:

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

function checkEnter(e)
{
    var characterCode;

    if(e && e.which)
    {
        e = e;
        characterCode = e.which;
    }
    else
    {
        e = event;
        characterCode = e.keyCode;
    }

    if(characterCode == 13)
    {
        yourFunction();
    }
}
Στο textbox:

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

onkeypress="checkEnter(event)"

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 30 Μαρ 2010 00:37

Δεν απέχει και πολύ από κάτι παραδείγματα που είδα στο νετ.

Το θέμα είναι ότι έχω και άλλο ένα js που ελέγχει το μήκος τον πεδίων και βγάζει τα ανάλογα μηνύματα:

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

$(document).ready(function(){						   
	
	// For menu_insert -> menu_title
	   $('input#menu_title').keyup(function(){ 
		  $('#mtc').show(0);	
		  $('#message').hide(0);		  
		  var max = parseInt($(this).attr('maxlength'));
		  if($(this).val().length >= max){
			//$(this).val($(this).val().substr(0, $(this).attr('maxlength')));
			 $('#mt').fadeIn('fast');
		  } else {
			 $('#mt').hide(0);
		  }
		  
		$('#mtc').text('Characters left: ' + (max-$(this).val().length));
		
	   }); 

	// For menu_insert -> menu_description
	   $('textarea#menu_description').keyup(function(){  
		  $('#mdc').show(0);
		  $('#message').hide(0);		  
		  var max = parseInt($(this).attr('maxlength'));
		  if($(this).val().length >= max){
			$(this).val($(this).val().substr(0, $(this).attr('maxlength')));
			 $('#md').fadeIn('fast');
		  } else {
			$(this).val($(this).val().substr(0, $(this).attr('maxlength')));			  
			 $('#md').hide(0);
		  }
		    
		$('#mdc').text('Characters left: ' + (max-$(this).val().length));
		  
	   });
	
	// Reset form id: menu_insert
	$('#reset').click(function() {		
		$('#mt').hide(0);		
		$('#mtc').hide(0);		
		$('#md').hide(0);		
		$('#mdc').hide(0);		
		$('#message').hide(0);		
		$('#menu_insert')[ 0 ].reset();	
	});
		
});
O έλεγχος τελικά που θα γίνει ? Στο .js που στέλνω τα δεδομένα στο php file η σε αυτό το file που ελέγχω το μήκος των πεδίων ? Μήπως θα έπρεπε να γίνει ένα αρχείο ώστε να μπορώ να καλέσω την

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

$('#submit').click(function()...


?

Γιατί έτσι όπως τα έχω σε ξεχωριστά αρχεία πως θα γίνει να καλέσω μια function από άλλο αρχείο?

Σε ευχαριστώ για την απάντηση!
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

jquery & enter key

Δημοσίευση από burnmind » 30 Μαρ 2010 16:59

Αφού κάνεις ούτως ή άλλως έλεγχο καθώς γράφει ο χρήστης, πρόσθεσε στον ήδη υπάρχον κώδικά σου και τον έλεγχο για το ποιο κουμπί πατήθηκε και αν είναι το enter κάλεσε τη συνάρτηση που θες. Αν η συνάρτηση που θες να καλέσεις είναι σε άλλο αρχείο, φρόντισε απλά να έχει φορτωθεί πιο πριν.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 30 Μαρ 2010 22:14

Σε ευχαριστώ πάρα πολύ θα το δοκιμάσω ελπίζω απόψε αν δεν "με πάρει o ύπνος".
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 31 Μαρ 2010 20:19

Δυστηχώς δεν βλέπω φως.... :roll:

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

	   $('input#menu_title').keyup(function(e){ 
		 
				var characterCode;
			
				if(e && e.which)
				{
					e = e;
					characterCode = e.which;
				}
				else
				{
					e = event;
					characterCode = e.keyCode;
				}
			
				if(characterCode == 13)
				{
					//yourFunction();
					alert('test');
				} 		  
		  
		  
		  
											});
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

jquery & enter key

Δημοσίευση από burnmind » 01 Απρ 2010 13:24

Ρίξε μια ματιά εδώ που περιέχει ένα παρόμοιο παράδειγμα αφού χρησιμοποιείς την keyup().

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 01 Απρ 2010 19:38

Thanks θα του ρίξω ένα βλέφαρο.
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 02 Απρ 2010 14:21

Κάτι περίεργο συμβαίνει και δεν μπορώ να καταλάβω τί?... :roll:

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

  $('input#menu_title').keyup(function(event){

      var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode));
      if (keycode == 13) { 
	  
	  alert('test');
	  
	  }
   });
http://www.datalabs.ws/easycms/administ ... n=add_menu

Κάνε μερικά κλικ γρήγορα στο πεδίο ονομασία και πάτα έντερ συνεχόμενα "spam" και τότε θα σου εμφανίσει το alert. Τι κουφό είναι αυτό πάλι ? :lol:

'Εφαγα το νετ αλλά ακόμα δεν βρήκα λύση.... :roll:
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 02 Απρ 2010 14:26

Solved:

Τώρα ανακάλυψα ότι για να δουλέψει θέλει .keypress event και όχι .keyup που έβαζα εγώ!!!

Ευχαριστώ!!!
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 02 Απρ 2010 15:06

Δεν γνωρίζω πως θα καλέσω την function που βρίσκεται σε άλλο αρχείο για να κάνω την καταχώρηση :/

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

	$('input#menu_title').keypress(function(event) {										
	  if (event.keyCode.toString() == 13) {
			$('#submit').click();
	   }
	});
Το $('#submit').click(); είναι που υποτίθεται θα κάνει την καταχώρηση αλλά στο άλλο αρχείο Js ξεκινάει έτσι:

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

$(document).ready(function(){
						   
	$('#submit').click(function() {
Any idead? thanks!
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

jquery & enter key

Δημοσίευση από burnmind » 02 Απρ 2010 16:54

Λοιπόν, κατ'αρχήν καλό είναι να διαβάσεις λίγο γι' αυτά που χρησιμοποιείς για να μπορείς να τα χρησιμοποιείς σωστά. Το .click είναι ένα event που καλείται όταν γίνεται click στο #submit. Διάβασε τι είναι και το .ready. Διαβάζοντας όλα αυτά, θα σε βοηθήσει να κάνεις τη δουλειά σου πιο γρήγορο και να μη περιμένεις απαντήσεις για απλά πράγματα.

Βάλε τον κώδικα της καταχώρησης που θέλεις σε μία δική σου function και κάλεσε αυτή από τα 2 events:

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

function whatever()
{
//whatever
}


$('input#menu_title').keypress(function(event) {										
	  if (event.keyCode.toString() == 13) {
			whatever();
	   }
	});


$('#submit').click(function(){
whatever();
});

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 02 Απρ 2010 20:19

Σε ευχαριστώ. Θα κάνω και ένα refresh στο jquery api :)
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

jquery & enter key

Δημοσίευση από vcore » 03 Απρ 2010 18:40

Work Complete :) Thanks again. Καλή Ανάσταση!
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

Απάντηση

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

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

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