Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Syötin

Sivun loppuun

oukki [17.03.2012 18:03:21]

#

Miten toteutan seuraavan:

Sivulla napit 0-10, nimikenttä ja kenttä, joka näyttää kuinka monta kertaa nappeja on painettu. Kun painalluksia on kymmenen, lähetetään tiedot automaattisesti skriptille, joka syöttää tiedot tietokantaan.

Javascrptilläkö tuollainen olisi paras tehdä. Löytyykö jostain esimerkkiä, jota voisi soveltaa. Javascrpt -kokemusta ei ole yhtään, mutta ohjelmointikokemusta jonkin verran.

Triton [17.03.2012 22:09:28]

#

JavaScriptillä lasket ne kentät ja sitten kun kaikki kymmenen on valittu, niin sen jälkeen lähetät esim. viestin PHP-skriptille, joka hoitaa tietokantapuolen... Tod. näk. helpointa on käyttää checkboxeja buttonien sijasta...

jQuerylla ja checkboxeja käyttämällä systeemi voitaisiin tehdä näin:

$( document ).ready( function () {

	var checked = 0;

	$( '.checkbox' ).click( function () {

		if ( ( $( this ).is( ':checked' ) ) ) {

			$( '#result' ).val( ++checked );
			if ( checked == 10 ) alert( "Kaikki ruudut valittu!" );

		}
		else {

			$( '#result' ).val( --checked );

		}

	} );

} );
<!--checkboxeja voi sitten olla n-määrä-->
<input type="checkbox" class="checkbox" />
<input type="checkbox" class="checkbox" />
<input type="checkbox" class="checkbox" />


<input type="text" id="result" value="0" />

oukki [17.03.2012 22:12:00]

#

Checkboksi ei käy, koska samaa nappia saatetaan painaa monta kertaa. Koodin siis täytyisi lähettää se, montako kertaa kutakin nappia on painettu, ja lisäksi vielä missä järjestyksessä.

Metabolix [17.03.2012 22:31:45]

#

<form action="skripti.php">
	<button type="button" value="1">1</button>
	<button type="button" value="2">2</button>
	<input type="text" name="painetut" value="" />
    <!-- Vaihda ylle type="hidden", jos haluat listan piiloon. -->
</form>
$("button").click(function() {
	var p = this.form.painetut;
	p.value = (p.value ? p.value + ", " : "") + this.value;
	if (p.value.split(", ").length == 10) {
		this.form.submit();
	}
});

oukki [18.03.2012 09:51:48]

#

Nyt sain jotain aikaan. Koodini toimi, kun kokeilin sitä aluksi niin, että se vain heittää ilmoituksen joka kerta, nappia painetaan. Ilmoitus kertoi kuinka mones painallus oli. Nyt yritin lisätä funktioon if-lauseen mutta nyt se ei enää toimi. Missä vika?

var painallusmaara = 0;
function klikkaus(nappinumero)
{
	painallusmaara ++;
	if (painallusmaara == 1){
	lomake.yksi.value == nappinumero;
	}
	if (painallusmaara == 2){
	lomake.kaksi.value == nappinumero;
	}
// if-lauseet kymppiin asti

}
</head>

<body>

<form name="lomake">


	<input type="button" value="  0  " onclick="klikkaus(0)">
	<input type="button" value="  1  " onclick="klikkaus(1)">
	<input type="button" value="  2  " onclick="klikkaus(2)">
//napit kymppiin asti
	<input type="text" name="yksi" value="" />
	<input type="text" name="kaksi" value="" />
//textboksit kymppiin asti


</form>

Macro [18.03.2012 10:01:28]

#

Vertaat klikkauskertoja napin numeroon. Vaihda if-lauseisiin painallusmaara -> nappinumero sekä if-lauseen sisälle nappinumero -> painallusmaara.

oukki [18.03.2012 12:42:06]

#

Kyllä sen täytyy noin päin olla. Koodin tarkoitus siis olisi syöttää ykkösboksiin ensimmäisenä painetun napin numero. Kakkosboksiin taas toisena painetun napin numero jne.

Macro [18.03.2012 13:19:15]

#

Sun koodin tarkotus muuttukin sitten tässä keskustelun aikana. Ensin lomake piti lähtettää kun nappia oli painettu 10 kertaa, nyt halutaankin vaan sijoitella niitä painalluksia johonkin tekstibokseihin.

Huomasimpahan vaan, että sulla on if-lauseen sisällä ==-vertaus =-merkin sijaan.

oukki [18.03.2012 13:23:14]

#

Kyllä sen edelleen kuuluu lähettää lomake kymmenennen painalluksen jälkeen. Taisin selittää asian vähän huonosti.

Macro [18.03.2012 13:29:38]

#

No lisää sitten vaikka tuohon koodiisi vielä yksi if-lohko ja kirjoita siihen

if(painallusmaara == 10)
  document.form.submit();

oukki [18.03.2012 16:03:33]

#

Kiitoksia. Nyt toimii.


Sivun alkuun

Vastaus

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

Tietoa sivustosta