is that a straight dump of your code?

if so, you don't have <script> tags around your JavaScript after the
closing </html> tag



On Jan 14, 5:24 pm, "j...@verax" <joti.bis...@gmail.com> wrote:
> Hi jQuery guru,
>
> I have an application based on struts and tiles. Validation is done by
> javascript at a global level.
> When I include my autocomplete code in my JSP page, the validation
> (checkValidation()) malfunctions with a javascript error  - "Object
> does not support this property or method" at the line
>
>  if (CCRDerrorContainer.hasChildNodes()).
>
> If I remove the autocomplete code from my JSP (business logic +
> autocomplete libraries) , the validation works as designed. Details of
> relevant code is provided below. Can anyone provide me with any clue
> as to how to resolve this problem ?
>
> ======================================================================
>
> -----------------------------------------------------------------------------------
> My JSP file
> -----------------------------------------------------------------------------------
> <%@ include file="../common/include.jsp" %>
> <link rel="stylesheet" type="text/css"   href="css/
> jquery.autocomplete.css" />
> <script type="text/javascript" src="js/autocomplete/lib/jquery.js"></
> script>
> <script type='text/javascript' src='js/autocomplete/
> jquery.autocomplete.js'></script>
>
> <script>
>                         var cols = []; // column mappings : 0=Last name, 
> 1=First Name,
> 2=Title, 3 = Employee ID
>                         $().ready(function() {
>
>                                 $('input#employeeLastName').flushCache();
>                                 
> $("#employeeLastName").autocomplete("jsp/common/getData.jsp?
> dataType=EmployeeName",{
>                                         minChars: 1,
>                                         max: 1000,
>                                         width: 400,
>                                         delay: 1000,
>                                         selectFirst: false,
>                                         autoFill: false,
>                                         cacheLength: 20,
>                                         matchContains: false,
>                                         matchSubset: true,
>                                         mustMatch: false,
>                                         matchCase: true,
>                                         formatItem: function(row, i, max) {
>                                                 cols = row[0].split("%");
>                                                 return i + "/" + max + ": " + 
> cols[0] + ", " + cols[1] + " (" +
> cols[2] + ")";
>                                         },
>                                         formatMatch: function(row) {
>                                                 cols = row[0].split("%");
>                                                 return cols[0] + ", " + 
> cols[1];
>                                         },
>                                         formatResult: function(row) {
>                                                 cols = row[0].split("%");
>                                                 return cols[0] + ", " + 
> cols[1] + " (" + cols[2] + ")";
>                                         }
>                                 });
>                                 $("#employeeLastName").result(function(event, 
> row, formatted) {
>                                         if (row) {
>                                                 cols = row[0].split("%");
>                                                 $(this).next().val(cols[3]);
>                                         }
>                                 });
>                         });
> </script>
> <tiles:importAttribute name="task" />
> <tiles:importAttribute name="action" />
> <tiles:importAttribute name="displayAction" />
> <tiles:importAttribute name="showArchived" />
>
> <style type="text/css">
>         @import "${pageContext.request.contextPath}/css/employee/select.css";
> </style>
>
> <h1>
>         <fmt:message key="employee.label.title.select" />
> </h1>
> <hr />
>
> <div id="employeeSelect">
>         <tiles:insert definition="successMessages" />
>         <tiles:insert definition="failureMessages" />
>         <ccrd:errors />
>
>         <html:form action="${action}" method="post" >
>
>                 <label for="employee" id="employeeLbl" >
>                         <fmt:message key="employee.text.selectEmployee" />
>                         <span class="task"><fmt:message key="${task}" 
> />:</span>
>                 </label>
>
>                 <html:text styleId="employeeLastName" property="lastName"
> size="100"
>                         maxlength="200">
>                 </html:text>
>                 <html:hidden property="employeeId" />
>                 <BR/> <BR/>
>                 <div class="buttons">
>                         <html:submit property="submit" 
> styleId="submitButton"><fmt:message
> key="button.submit"/></html:submit>
>                         <html:submit property="cancel" 
> styleId="cancelButton"><fmt:message
> key="button.cancel"/></html:submit>
>                 </div>
>
>         </html:form>
> </div>
>
> --------------------------------------------------------------------------------------------------------
> Tiles-Defs extract
> ---------------------------------------------------------------------------------------------------------
>
> <definition name=".default" path="/jsp/layouts/template.jsp" >
>         <put name="header"  value="/jsp/layouts/header.jsp" />
>         <put name="leftnav" value="/jsp/layouts/menu.jsp" />
>         <put name="footer"  value="/jsp/layouts/footer.jsp" />
> </definition>
>
> -----------------------------------------------------------------------------------------------------------
> Template.jsp
> ------------------------------------------------------------------------------------------------------------
> <%@ page contentType="text/html;charset=ISO-8859-1" language="java"%>
> <%@ include file="../common/include.jsp"%>
>
> <%
> response.setHeader("Pragma","no-cache"); //HTTP 1.0
> response.setHeader("Cache-Control","no-cache, private, no-store, max-
> stale=0"); //HTTP 1.1
> response.setDateHeader("Expires", 0); //prevents caching at the proxy
> server
> %>
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
>
> <html>
>         <head>
>                 <base
>                         
> href="@base.href.protocol@://${pageContext.request.serverName}
> @base.href.p...@${pagecontext.request.contextpath}/" />
>                 <title><bean:message key="template.header.title" />
>                 </title>
>                 <meta http-equiv="Content-Type"
>                         content="text/html; charset=ISO-8859-1" />
>                 <meta http-equiv="pragma" content="no-cache" />
>                 <meta http-equiv="cache-control" content="no-cache" />
>                 <meta http-equiv="expires" content="Sun, 28 Dec 1997 09:32:45 
> GMT" /
>
>
>
>                 <link rel="stylesheet" type="text/css" href="css/style.css" />
>                 <link rel="stylesheet" type="text/css" href="css/menu.css" />
>                 <link rel="stylesheet" type="text/css" href="main.css" />
>
>                 <script type="text/javascript" src="js/common.js"></script>
>                 <script type="text/javascript" src="js/calendar.js"></script>
>                 <script type="text/javascript" 
> src="js/StrutsMenuControl.js"></
> script>
>                 <script type="text/javascript" 
> src="js/TableFilter.js"></script>
>                 <script type="text/javascript" 
> src="js/validation.js"></script>
>
>         </head>
>
>         <body onload="checkValidation();">
>                 <div id="shadow">
>                         <div id="container">
>                                 <tiles:insert attribute="header" 
> flush="false" />
>                                 <div id="body">
>                                         <div id="menucontainer">
>                                                 <tiles:insert 
> attribute="leftnav" flush="false" />
>                                         </div>
>                                         <div id="contentcontainer">
>                                                 <div id="content">
>                                                         <!-- Content goes 
> here -->
>                                                         <tiles:insert 
> attribute="body" flush="false" />
>                                                         <!-- Content ends 
> here -->
>                                                 </div>
>                                         </div>
>                                         <div class="break">
>                                         </div>
>                                 </div>
>                         </div>
>                 </div>
>
>                 <tiles:insert attribute="footer" flush="false" />
>
>         </body>
> </html>
>
> ------------------------------------------------
> Validation Javascript
> ------------------------------------------------
>
> //
> // validate.js -- JS functions for validation
> //
>
> var CCRDerror_FIELD_CLASS = "errorField";
> var CCRDerror_CONTAINER_ID = "errorContainer";
> var CCRDerror_DIV_CLASS = "error";
>
> //
> // checkValidation()
> //
> // Check if CCRDerror container exists, and if so
> // update form fields and set up event handlers
> // for CCRDerror fields.
> //
>
> function checkValidation() {
>         var CCRDerrorContainer = $(CCRDerror_CONTAINER_ID);
>
>         if (CCRDerrorContainer) {
>                 if (CCRDerrorContainer.hasChildNodes()) {
>                         // get the bg colour from the CCRDerror class
>                         var CCRDerrorField = $E("div", CCRDerror_FIELD_CLASS);
>                         document.body.appendChild(CCRDerrorField);
>
>                         var bgcolor = getStyle(CCRDerrorField, 
> "backgroundColor");
>                         if (!bgcolor)
>                                 bgcolor = getStyle(CCRDerrorField, 
> "background-color");
>
>                         for ( var i = 0; i < 
> CCRDerrorContainer.childNodes.length; i++) {
>                                 if (CCRDerrorContainer.childNodes[i].tagName 
> == "DIV") {
>                                         var id = 
> CCRDerrorContainer.childNodes[i].id;
>                                         var field = getFormElement(id);
>
>                                         // Update input background color
>                                         field.style.backgroundColor = bgcolor;
>
>                                         // Add event handlers for focus and 
> blur
>                                         Event.addEventHandler(field, "focus", 
> gotFocus);
>                                         Event.addEventHandler(field, "blur", 
> lostFocus);
>
>                                         field.setAttribute("errorField", 
> true);
>                                 }
>                         }
>
>                         displayFirstCCRDerror();
>                 }
>         }
>
> }
>
> //
> // displayFirstCCRDerror()
> //
> // Display CCRDerror for first CCRDerror field
> // in the form
> //
>
> function displayFirstCCRDerror() {
>         for ( var j = 0; j < document.forms.length; j++) {
>                 for ( var i = 0; i < document.forms[j].elements.length; i++) {
>                         if 
> (document.forms[j].elements[i].getAttribute("errorField")) {
>                                 if (isVisible(document.forms[j].elements[i])) 
> // Only set
>                                                                               
>                                                   // focus to
>                                                                               
>                                                   // visible
>                                                                               
>                                                   // objects
>                                         document.forms[j].elements[i].focus();
>                                 return;
>                         }
>                 }
>         }
>
> }
>
> //
> // gotFocus(event)
> //
> // Callback for field 'onFocus' handler
> //
>
> function gotFocus(event) {
>         var ev = new Event(event);
>         displayCCRDerror(ev.getTarget());
>
> }
>
> //
> // lostFocus(event)
> //
> // Callback for field 'onBlur' handler
> //
>
> function lostFocus(event) {
>         var ev = new Event(event);
>         hideCCRDerror(ev.getTarget());
>
> }
>
> //
> // displayCCRDerror(field)
> //
> // Show CCRDerror popup for 'field'
> //
>
> function displayCCRDerror(field) {
>         var obj = $(field.name);
>         obj.style.display = "block";
>         obj.style.left = getXPos(field) + "px";
>         obj.style.top = (getYPos(field) - obj.offsetHeight) + "px";
>
> }
>
> //
> // hideCCRDerror(field)
> //
> // Hide CCRDerror popup for 'field'
> //
>
> function hideCCRDerror(field) {
>         var obj = $(field.name);
>         obj.style.display = "none";
>
> }
>
> ------------------------------------------------------

Reply via email to