webForumDet fria alternativet

Hjälp med validering och motsvarighet i jquery

13 svar · 2 086 visningar · startad av bikic

bikicMedlem sedan juni 2006261 inlägg
#1

Hej,

jag vill validera på samma sätt som jag gör med vanlig javascript.

Idag har jag en script i jquery som postar mitt formulär och ser ut så här:


$("#submitForm").click(function() {
	$("#frm1").submit();
});

Vid denna körning så vill jag kolla om ett värde innehåller 0, i så fall så ska man inte kunna posta formuläret.

I javascript räcker det med denna kod:


if (document.getElementById("fldDepartment").value=="0"){
	alert("Wrong!");document.getElementById("namnpådiv").focus();
	return false;
} 
else {

	document.getElementById("frm1").submit();
	return true;
}

Hur kan jag göra på liknande sätt med mitt jqueryscript ovan?

Tacksam för svar!

voigtann1Medlem sedan juni 20019 519 inlägg
#2
$("#frm1").submit(function() {
	if (document.getElementById("fldDepartment").value=="0"){
		alert("Wrong!");
		document.getElementById("namnpådiv").focus();
		return false;
	}
});

och om det är en input,button av typen submit så behöver du inte:

$("#submitForm").click(function() {
	$("#frm1").submit();
});

i huvudtaget.

bikicMedlem sedan juni 2006261 inlägg
#3

Tack för hjälpen!

voigtann1Medlem sedan juni 20019 519 inlägg
#4

kör på koden du har redan, lägg bara in ett event på submit på ditt formulär.

PeppoMedlem sedan sep. 2003205 inlägg
#5

Om man nu ändå kör jquery varför inte använda det fullt ut :)

	$("#frm1").submit(function() {
		if ($("#fldDepartment").val() == "0"){
			alert("Wrong!");
			$("#namnpådiv").focus();	
			return false;
		}
	});

Har inte testat ovanstående men man behöver alltså inte använda sig av getElementById utan man kan istället använda $("#id_på_element").
Läs mer här: http://api.jquery.com/category/selectors/

voigtann1Medlem sedan juni 20019 519 inlägg
#6

Peppo: Varför använda jquery när du inte skall göra något speciellt med den.

Vanlig JS är snabbare än jquery, speciellt i detta läge.

PeppoMedlem sedan sep. 2003205 inlägg
#7

voigtann1 skrev:

Peppo: Varför använda jquery när du inte skall göra något speciellt med den.

Han använder ju jquery till att kolla submit.

voigtann1 skrev:

Vanlig JS är snabbare än jquery, speciellt i detta läge.

Det är mycket möjligt men det måste vara otroligt liten skillnad? Han använder ju ändå jquery. Då borde man ju i så fall skippa jquery överhuvudtaget för en sån liten grej. Tyckte bara det var så märkligt att blanda in vanlig javascript i jquery, men alla sätt som fungerar är bra :)

Edit: Har tydligen glömt läsglasögonen idag... Nu förstår jag vad du menar, du har ju faktiskt skrivit "kör på koden du har redan, lägg bara in ett event på submit på ditt formulär."

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Peppo, varför använda jquery på ett objekt när man inte behöver använda något med jquery på dom, nej det är inte smart, det är korrekt gjort av bikic.

Då borde man ju i så fall skippa jquery överhuvudtaget för en sån liten grej. Tyckte bara det var så märkligt att blanda in vanlig javascript i jquery

Förmodligen använder man jquery till mycket mer på sidan än bara att kolla ett formulär.

som svar på den andra stycket så är det en smaksak från ditt håll, men det är snabbare att göra på det sätt bikic skriver.

PeppoMedlem sedan sep. 2003205 inlägg
#9

voigtann1: Ok, då är jag med :)
Jag använder förmodligen jquery lite för mycket själv och borde tänka efter om det är motiverat i alla lägen.

voigtann1Medlem sedan juni 20019 519 inlägg
#10

Peppo skrev:

voigtann1: Ok, då är jag med :)
Jag använder förmodligen jquery lite för mycket själv och borde tänka efter om det är motiverat i alla lägen.

det är inte korkat.... du kanske vill använda dig av annat än ID och då gillar jag jquery mycket mer ;)

PalleMedlem sedan apr. 20003 174 inlägg
#11

Off topic: Finns det bara ett #id som selector åberopas alltid document.getElementById direkt och vare sig Sizzle eller querySelectorAll används över huvud taget i detta läget. Någon skillnad i snabbhet är det alltså inte att tala om mellan de olika användningssätten i exemplet ovan. :)

voigtann1Medlem sedan juni 20019 519 inlägg
#12

Palle, det är inte riktigt sant, visst kommer den köra getElementById men samtidigt så få du ett objekt du inte behöver.

Varför säger ALLA sajter om preformence+jquery att OM man inte behöver använda jquery specfika funktioner så är den ALLTID långsammare ändocument.getElementById? Varför får jag att den är runt ~15% långsammare när jag kör tester i exempelvis firefox på: http://jsperf.com/document-get-element-by-id-vs-jquery-vs-custom-function ?

PalleMedlem sedan apr. 20003 174 inlägg
#13

voigtann1 skrev:

Palle, det är inte riktigt sant, visst kommer den köra getElementById men samtidigt så få du ett objekt du inte behöver.

Ja visst är det så, native returnerar DOM medans jQuery naturligtvis (och tyvärr) returnerar ett jQuery objekt.

voigtann1 skrev:

Varför säger ALLA sajter om performance+jquery att OM man inte behöver använda jquery specfika funktioner så är den ALLTID långsammare än document.getElementById?

Därför att det är så, native är alltid snabbare - på alla punkter. Dock är skiljer sig prestandaskillnaderna mer markant beroende på hur mycket markup som finns i de olika sidorna. En liten/normal webbplats med lite markup är prestandavinsten marginell kontra en stor webbplats.

voigtann1 skrev:

Varför får jag att den är runt ~15% långsammare när jag kör tester i exempelvis firefox på: http://jsperf.com/document-get-element-by-id-vs-jquery-vs-custom-function ?

jsperf är ett kanonbra verktyg om man vill testa kodprestanda på en riktigt stor webbplats, eftersom den kör extremt många testcykler. Skapar man ett lokalt testcase och testar bikic´s kod i (som jag kommenterade på ovan) så är prestandavinsten med att köra native +-0.

Alltså voigtann1, missförstå mig inte - även om jQuery är ett jättebra ramverk så förespråkar jag alltid användandet av native JavaScript före jQuery där det fungerar. :bire

DyenundMedlem sedan mars 20111 inlägg
#14

#subject

Palle, det är inte riktigt sant, visst kommer den köra getElementById men samtidigt så få du ett objekt du inte behöver. Varför säger ALLA sajter om preformence+jquery att OM man inte behöver använda jquery specfika funktioner så är den ALLTID långsammare ändocument.getElementById? Varför får jag att den är runt ~15% långsammare när jag kör tester i exempelvis firefox på: http://jsperf.com/document-get-eleme...ustom-function ?

...

145 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
141 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)