Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS: Jos käyttäjätunnus ei ole vapaa

Thalassa [19.01.2014 19:20:50]

#

$(document).ready(function() {
	$('#tarkista').load('check.php').show();

$('#tunnus_input').keyup(function() {
	$.post('check.php', {tunnus:rekisterointi.tunnus.value},
	function(result) {
		$('#tarkista').html(result).show();
	});
		});

});

Tämä ja tuo check.php yhdessä siis tarkistavat tietokannasta, onko käyttäjätunnus jo varattu. Ongelma vain on, etten ole ihan varma, miten lomakkeen lähetys voidaan estää jos käyttäjätunnus ei olekaan vapaa. Ideoita?

The Alchemist [19.01.2014 19:58:45]

#

Lisäät lomakkeen lähetykseen event handlerin ja jos lomake ei validoidu (eli jossain kentässä virheellistä dataa), niin blokkaat vain submitin. Alla oleva esimerkki olettaa, että tuossa käyttäjänimen kentän validoinnissa inputille lisätään luokka invalid, jos se ei läpäise validointia. Homman voi tietysti hoitaa myös vähemmän geneerisesti esim. tarkistamalla vain kyseisen kentän tilan (eikä kaikkia mahdollisia kenttiä).

var form = $('#myform');

form.on('submit', function(e) {
  var invalid = form.find(':input.invalid');
  if (invalid.length > 0) {
    e.preventDefault();
  }
});

Metabolix [19.01.2014 20:13:51]

#

Sinun kannattaa hakea PHP-skriptiltä jotain muuta kuin HTML-dataa, esimerkiksi ihan tekstinä ykkönen tai nolla tai jokin JSON-muotoinen viesti. Kokonaisuus toimii jotenkin tähän malliin:

$('input[name=tunnus]').keyup(function() {
	var input = $(this);
	$.post(
		'check.php',
		{tunnus: this.value},
		function(result) {
			var tunnus_vapaa = (result == "1");
			if (tunnus_vapaa) {
				input.removeClass("invalid");
				$('#tulos').hide();
			} else {
				input.addClass("invalid");
				$('#tulos').text("Tunnus on jo käytössä!").show();
			}
		}
	);
});
$('form').submit(function(e) {
	if (form.find(':input.invalid').length > 0) {
		e.preventDefault();
	}
});

qeijo [20.01.2014 09:45:44]

#

Tämä ei tietenkään saa toimia ainoana ko. asian tarkistajana. Todellinen tarkistus on tehtävä kuitenkin ennen inserttiä tai sen myötä.

groovyb [20.01.2014 13:34:23]

#

jos softa sisältää client puolen validointeja, pitää ne luonnollisesti toteuttaa myös serveripuolella.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta