EDIT*
Jag ber er läsa tråden och komma med ev tips och trix, men huvudfrågan är löst inputs.className.indexOf('required') ska ju vara inputs.className.indexOf('required') > -1 för att det ska fungera
*************************
Hej!
Nu är jag här igen, jag har pillat ihop ett script som validerar ett antal input="text" men endast om required finns med i class="".
Dock fungerar det inte som jag vill, jag trodde att jag hade löst hela biten, men icke!
function validateForm(theForm, mess){
var formNamee = theForm.name;
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].className.indexOf('required') && inputs[i].value == 0){
var reqID = inputs[i].id;
var reqName = inputs[i].alt;
nAlert(mess, reqID, formNamee, reqName);
return false;
}
}
}
theForm = this från formuläret.
mess = 'felmeddelandet man vill visa' från formuläret.
if(inputs.className.indexOf('required') && inputs.value == 0) den här raden hade jag hoppats skulle ge det resultat jag är ute efter, nämligen att visa min alertruta om klassen innehåller required och value är tomt.
Dock så kollar den alla inputs jag har, även de som har klass asdf osv.
Har skrivit om koden enligt nedan, dock så verkar det som att den kollar alla <input ändå. jag vill ju bara att den ska kolla de inputs som har required i className och där value är tomt. Vad har jag gjort fel egentligen ?
function validateForm(theForm, mess){
var formNamee = theForm.name;
var inputs = document.getElementsByTagName('input');
var reqID = new Array();
var reqName = new Array();
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].className.indexOf('required') > -1 && inputs[i].value == 0){
var reqID[i] = inputs[i].id;
var reqName[i] = inputs[i].alt;
}
}
nAlert(mess, reqID[1], formNamee, reqName);
return false;
}
EDIT*
En fråga till, hur i hela världen replacar jag "," komma ?
har läst flera exempel som säger str.replace(/,/g,'.'); Men det fungerar väldigt dåligt för mig, förslag där ?
Det ser lite märkligt ut.
Inne i din for-loop;
Ta bort 'var' framför dina arrayer 'reqID' och 'reqName' - dom är redan deklarerade som arrayer.
Du sätter index med hjälp av 'i', men 'i' kan ibland hoppa över ett index i och med din if-sats - därför tror jag det verkar som att du får felet.
function validateForm(theForm, mess){
var formNamee = theForm.name;
var inputs = document.getElementsByTagName('input');
var reqID = new Array();
var reqName = new Array();
var n = 0;
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].className.indexOf('required') > -1 && inputs[i].value == 0){
reqID[n] = inputs[i].id;
reqName[n++] = inputs[i].alt;
}
}
if(reqID.length() > 0)
alert("Du har inte fyllt i de fält som är obligatoriska");
}