johnnyb
06-04-2006, 05:56 PM
Hi,
I have this function which works great in Firefox, but doesn't work in IE. I can make it work in IE by breaking it in Firefox, but I'd like it to work in both.
Here's the function, with associated code:
function validate_check(input, message)
{
var par = input.parentNode;
var prev = input.previousSibling;
if(!input.checked) {
if(prev.innerHTML != message) {
var errmsg = document.createElement("p");
errmsg.innerHTML = message;
par.insertBefore(errmsg, input);
}
dosubmit = false;
} else if(prev.innerHTML == message) {
par.removeChild(prev);
}
}
var agree = document.getElementById('agree');
var agreemsg = 'Please make sure you agree to our <a href="/tou.php" target="_blank">Terms of Use</a> and <a href="/privacy.php" target="_blank">Privacy Policy</a> to add your listing.';
validate_check(agree, agreemsg);
For the two attributes the function accepts, input is a node from that document tree that is a checkbox, and message is a string.
If the checkbox is not checked the function inserts a <p> element immediately before the input. That part works fine in both. However, the 'prev.innerHTML == message' and 'prev.innerHTML != message' don't work properly in IE. I think it is because of the <a> tags in 'message'. However, when I try to use the String() function there are problems because the 'prev' object is not always set, (like, if a paragraph isn't written right before the checkbox).
Does anyone know how to make this work properly in both browsers?
Thanks a lot.
John
I have this function which works great in Firefox, but doesn't work in IE. I can make it work in IE by breaking it in Firefox, but I'd like it to work in both.
Here's the function, with associated code:
function validate_check(input, message)
{
var par = input.parentNode;
var prev = input.previousSibling;
if(!input.checked) {
if(prev.innerHTML != message) {
var errmsg = document.createElement("p");
errmsg.innerHTML = message;
par.insertBefore(errmsg, input);
}
dosubmit = false;
} else if(prev.innerHTML == message) {
par.removeChild(prev);
}
}
var agree = document.getElementById('agree');
var agreemsg = 'Please make sure you agree to our <a href="/tou.php" target="_blank">Terms of Use</a> and <a href="/privacy.php" target="_blank">Privacy Policy</a> to add your listing.';
validate_check(agree, agreemsg);
For the two attributes the function accepts, input is a node from that document tree that is a checkbox, and message is a string.
If the checkbox is not checked the function inserts a <p> element immediately before the input. That part works fine in both. However, the 'prev.innerHTML == message' and 'prev.innerHTML != message' don't work properly in IE. I think it is because of the <a> tags in 'message'. However, when I try to use the String() function there are problems because the 'prev' object is not always set, (like, if a paragraph isn't written right before the checkbox).
Does anyone know how to make this work properly in both browsers?
Thanks a lot.
John