...

View Full Version : don't work in firefox and google chrome



marian2oo7
05-20-2009, 09:42 AM
hi all, this is my first post here and first day on this forum :thumbsup:
i use this script:

http://www.leigeber.com/2008/04/dynamic-inline-javascript-form-validation/
but I added more fields. The script is work greate in Opera and IE, but in firefox and google chrome only first field is fine and i don't know why.
this is the script:

http://youmdb.com/messages.html
Here is the JS code:

// form validation function //
function validate(form) {
var movie = form.movie.value;
var year = form.year.value;
var language = form.language.value;
var subtitle = form.subtitle.value;
var key = form.key.value;
var description = form.description.value;
var file = form.file.value;
if(movie == "") {
inlineMsg('movie','You must enter the movie name.',2);
return false;
}
if(year == "") {
inlineMsg('year','Please select year.',2);
return false;
}
if(language == "") {
inlineMsg('language','Please select language.',2);
return false;
}
if(subtitle == "") {
inlineMsg('subtitle','You must enter the subtitle name.',2);
return false;
}
if(key == "") {
inlineMsg('key','You must enter the keywords.',2);
return false;
}
if(description == "") {
inlineMsg('description','You must enter the description.',2);
return false;
}
if(file == "") {
inlineMsg('file','Please select a file!.');
return false;
}
if(document.form.file.value.search(/\.(rar|zip)$/) == -1) {
inlineMsg('file','Only rar and zip file are accepted!',2);
return false;
}
return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
var msg;
var msgcontent;
if(!document.getElementById('msg')) {
msg = document.createElement('div');
msg.id = 'msg';
msgcontent = document.createElement('div');
msgcontent.id = 'msgcontent';
document.body.appendChild(msg);
msg.appendChild(msgcontent);
msg.style.filter = 'alpha(opacity=0)';
msg.style.opacity = 0;
msg.alpha = 0;
} else {
msg = document.getElementById('msg');
msgcontent = document.getElementById('msgcontent');
}
msgcontent.innerHTML = string;
msg.style.display = 'block';
var msgheight = msg.offsetHeight;
var targetdiv = document.getElementById(target);
targetdiv.focus();
var targetheight = targetdiv.offsetHeight;
var targetwidth = targetdiv.offsetWidth;
var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
msg.style.top = topposition + 'px';
msg.style.left = leftposition + 'px';
clearInterval(msg.timer);
msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
if(!autohide) {
autohide = MSGHIDE;
}
window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
var msg = document.getElementById('msg');
if(!msg.timer) {
msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
}
}

// face the message box //
function fadeMsg(flag) {
if(flag == null) {
flag = 1;
}
var msg = document.getElementById('msg');
var value;
if(flag == 1) {
value = msg.alpha + MSGSPEED;
} else {
value = msg.alpha - MSGSPEED;
}
msg.alpha = value;
msg.style.opacity = (value / 100);
msg.style.filter = 'alpha(opacity=' + value + ')';
if(value >= 99) {
clearInterval(msg.timer);
msg.timer = null;
} else if(value <= 1) {
msg.style.display = "none";
clearInterval(msg.timer);
}
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
var left = 0;
if(target.offsetParent) {
while(1) {
left += target.offsetLeft;
if(!target.offsetParent) {
break;
}
target = target.offsetParent;
}
} else if(target.x) {
left += target.x;
}
return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
var top = 0;
if(target.offsetParent) {
while(1) {
top += target.offsetTop;
if(!target.offsetParent) {
break;
}
target = target.offsetParent;
}
} else if(target.y) {
top += target.y;
}
return top;
}

// preload the arrow //
if(document.images) {
arrow = new Image(7,80);
arrow.src = "images/msg_arrow.gif";
}
Sorry 4 my english.

Eldarrion
05-20-2009, 03:44 PM
Considering inlineMsg works based off of IDs... no wonder it breaks. Every element you're checking _needs_ to have an id... pretty much the one you put in:



inlineMsg('language','Please select language.',2);


Double-check your HTML mark-up, then try again. Additionally, you might want to work with else ifs for each check, that way you won't have to deal with the message moving to the last possible field when it actually does work. Just don't forget the else at the end... like so:



else if(document.form.file.value.search(/\.(rar|zip)$/) == -1) {
inlineMsg('file','Only rar and zip file are accepted!',2);
return false;
}
else
return true;


See how that goes for you.

marian2oo7
05-21-2009, 07:06 AM
resolved, thank you! was from HTML



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum