Javascript korter maken
Heb onderstaande code gemaakt om velden te vergelijken, mochten er 2 of meerdere velden met de zelfde inhoud zijn, dan krijg je een foutmelding. De code werkt goed maar ik vind de code te lang. Heeft iemand een tip of voorbeeldje hoe de code korter kan?
Alvast bedankt voor de reacties.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function opslaan(){
if ($("#num1").val() == '' || $("#num2").val() == '' || $("#num3").val() == '' || $("#num4").val() == '' || $("#num5").val() == ''){
$("#foutje").html(leeg);
foutje.style.display = "block";
return false;
}
if ($("#num1").val() == $("#num2").val() || $("#num1").val() == $("#num3").val() || $("#num1").val() == $("#num4").val() || $("#num1").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num2").val() == $("#num1").val() || $("#num2").val() == $("#num3").val() || $("#num2").val() == $("#num4").val() || $("#num2").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num3").val() == $("#num2").val() || $("#num3").val() == $("#num1").val() || $("#num3").val() == $("#num4").val() || $("#num3").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num4").val() == $("#num2").val() || $("#num4").val() == $("#num1").val() || $("#num4").val() == $("#num3").val() || $("#num4").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num5").val() == $("#num2").val() || $("#num5").val() == $("#num1").val() || $("#num5").val() == $("#num3").val() || $("#num5").val() == $("#num4").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
}
if ($("#num1").val() == '' || $("#num2").val() == '' || $("#num3").val() == '' || $("#num4").val() == '' || $("#num5").val() == ''){
$("#foutje").html(leeg);
foutje.style.display = "block";
return false;
}
if ($("#num1").val() == $("#num2").val() || $("#num1").val() == $("#num3").val() || $("#num1").val() == $("#num4").val() || $("#num1").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num2").val() == $("#num1").val() || $("#num2").val() == $("#num3").val() || $("#num2").val() == $("#num4").val() || $("#num2").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num3").val() == $("#num2").val() || $("#num3").val() == $("#num1").val() || $("#num3").val() == $("#num4").val() || $("#num3").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num4").val() == $("#num2").val() || $("#num4").val() == $("#num1").val() || $("#num4").val() == $("#num3").val() || $("#num4").val() == $("#num5").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
if ($("#num5").val() == $("#num2").val() || $("#num5").val() == $("#num1").val() || $("#num5").val() == $("#num3").val() || $("#num5").val() == $("#num4").val()){
$("#foutje").html(foutje);
foutje.style.display = "block";
return false;
}
}
Gewijzigd op 16/06/2012 18:58:26 door Lano Heeren
dus het enige dat je hoeft te doen is een fucntie te schrijven waarbije je dat kan invoeren
Beter is het dan om het op te slaan in een variabele:
Ook heb je van elk element alleen de value nodig, dus kan je ook alleen die value opslaan:
En als je dan toch al jQuery gebruikt doe dan i.p.v. foutje.style.display = 'block' gewoon foutje.css('display', 'block').
Ook geef je altijd return false, waarom die dan niet uit de if statement halen en gewoon onderin de functie plaatsen?
Alle if statements doen hetzelfde, waarom die dan niet allemaal bij elkaar voegen?
Tevens zal ik ook alle waardes in een array zetten. Dan kun je heel simpel met jQuery.inArray() al die OR's vervangen.
Enige probleem is dan dat je de waarde van de value waarmee je checkt niet meerekent, maar dat is op te lossen met een simpel if je.
Hoe ik het dus zou maken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function opslaan() {
// sla values op in een array
var values = [
$('#num1').val(),
$('#num2').val(),
$('#num3').val(),
$('#num4').val(),
$('#num5').val()
];
var foutje = $('#foutje');
var foutmelding = 'Een foutje...';
if ( (jQuery.inArray(values[0], values) !== 0 || jQuery.inArray(values[0], values, 1) !== -1)
|| (jQuery.inArray(values[0], values) !== 1 || jQuery.inArray(values[0], values, 2) !== -1)
|| (jQuery.inArray(values[0], values) !== 2 || jQuery.inArray(values[0], values, 3) !== -1)
|| (jQuery.inArray(values[0], values) !== 3 || jQuery.inArray(values[0], values, 4) !== -1)
|| (jQuery.inArray(values[0], values) !== 4 || jQuery.inArray(values[0], values, 5) !== -1)
|| (jQuery.inArray(values[0], values) !== 5)
) {
foutje.html(foutmelding).css('display', 'block');
}
return false;
}
// sla values op in een array
var values = [
$('#num1').val(),
$('#num2').val(),
$('#num3').val(),
$('#num4').val(),
$('#num5').val()
];
var foutje = $('#foutje');
var foutmelding = 'Een foutje...';
if ( (jQuery.inArray(values[0], values) !== 0 || jQuery.inArray(values[0], values, 1) !== -1)
|| (jQuery.inArray(values[0], values) !== 1 || jQuery.inArray(values[0], values, 2) !== -1)
|| (jQuery.inArray(values[0], values) !== 2 || jQuery.inArray(values[0], values, 3) !== -1)
|| (jQuery.inArray(values[0], values) !== 3 || jQuery.inArray(values[0], values, 4) !== -1)
|| (jQuery.inArray(values[0], values) !== 4 || jQuery.inArray(values[0], values, 5) !== -1)
|| (jQuery.inArray(values[0], values) !== 5)
) {
foutje.html(foutmelding).css('display', 'block');
}
return false;
}
Gewijzigd op 16/06/2012 20:11:08 door Wouter J
Gewijzigd op 16/06/2012 21:21:04 door Lano Heeren