views:

425

answers:

4

In my JSP i am using a custom tag <showDateFormat/>
like:

Date From:<showDateFormat/>

and in my common.js file i am having

function addDateFormatInfo(){
    var dateFormatHolder = document.getElementsByTagName("showDateFormat"); 
    if ( dateFormatHolder ){  
     for ( i = 0 ; i < dateFormatHolder.length; i++ ){
      dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';       
     } 
    }
}

so in my page wherever there is showDateFormat tag is used, it will display (mm/dd/yyyy). It is working fine in FF, but not in IE. what could be the problem?

+4  A: 

You need to tell IE about the tag first. Add this line somewhere before calling addDateFormatInfo():

document.createElement("showDateFormat");

IE will now initialize the element correctly - you can treat it just like any other element. Firefox does this automatically.

Here's the source blog post:

http://ajaxian.com/archives/getting-html-5-styles-in-ie-7

Support for createElement() starts in IE7 - though I works fine in FF3.0.15

Full Example

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>Home | My Website</title>
    </head>

    <body>

<script type="text/javascript">

document.createElement("showDateFormat");

function addDateFormatInfo(){
    var dateFormatHolder = document.getElementsByTagName("showDateFormat");     
    if ( dateFormatHolder ){        

        for ( i = 0 ; i < dateFormatHolder.length; i++ ){
                dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';                                               
        } 
    }
}

</script>

<div>
Date From:<showDateFormat/>
</div>
<div>
Date From:<showDateFormat/>
</div>

<div>
Date From:<showDateFormat/>
</div>

<div>
Date From:<showDateFormat/>
</div>


<p><input type="button" value="click me" onclick="addDateFormatInfo()" />
</p>

</body>

</html>
pygorex1
hey that works too, i like that trick
Ayyash
kool thats working. :).
Rakesh Juyal
A: 

Please take a look about Custom Tags support in Internet Explorer.

Windows Internet Explorer's support for custom tags on an HTML page requires that a namespace be defined for the tag. Otherwise, the custom tag is treated as an unknown tag when the document is parsed

http://msdn.microsoft.com/en-us/library/ms531076%28VS.85%29.aspx

S.Mark
A: 

what you need a custom tag for IE, using Namespaces:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:IETag>

and instead of plain:

<showDateFormat/>

use

<IETag:showDateFormat/>

cutom tags are much more powerful especially when bound to HTC behaviors, but unfortunately they are still IE specific, although you can manage to code something using JQUERY for all browsers, read more here: Using custom tags in IE

Ayyash
A: 

The following blog will have the necessary information http://www.kenvillines.com/archives/000069.html

Ramji