0
我正在調試一個老的jsp/javascript頁面,發生了一些奇怪的事情:頁面上有一個帳單搜索表單,十幾個輸入和選擇字段,它是一個struts應用程序,所有其他瀏覽器都可以正常工作,IE 10除外,問題是當您第一次加載頁面時,一切正常,但是如果再次加載該頁面,則輸入字段會凍結,當我將鼠標懸停並單擊字段時,什麼都不會發生,並且它不會讓我輸入信息,如果你第三次加載這個頁面,它再次OK,但是第四次,它被凍結,等等等等。在頁面上有一個「清除」按鈕,當表單被凍結時,你可以點擊按鈕,它將調用一個JavaScript來清除緩存,它會將一些http會話設置爲空並重定向到該頁面,並且輸入字段將再次活躍。如何檢測HTML文本字段是否處於活動狀態?
下面是一些代碼:
<form:form commandName="commandBean"
name="billingSearch">
<div id="form-row">
<div id="form-row-left">Carrier Name:</div>
<div id="form-row-right">
<form:select path="masterCompany" id="select_style">
<form:options items="${commandBean.masterCompanyList}" itemValue="id" itemLabel="masterCompanyName"/>
</form:select>
</div>
</div>
<c:choose>
<c:when test="${!commandBean.agent}">
<div id="form-row">
<div id="form-row-left">Agency Name:</div>
<div id="form-row-right">
<form:select path="agency" id="select_style">
<form:options items="${commandBean.agencyList}" itemValue="id" itemLabel="agencyName"/>
</form:select>
</div>
</div>
</c:when>
</c:choose>
<c:choose>
<c:when test="${!commandBean.agent && !commandBean.mga && !commandBean.insured}">
<div id="form-row">
<div id="form-row-left">Agency Group:</div>
<div id="form-row-right">
<form:select path="agencyGroupId" id="select_style">
<form:options items="${commandBean.agencyGroupList}" itemValue="id" itemLabel="groupName"/>
</form:select>
</div>
</div>
</c:when>
</c:choose>
...
<div id="form-row">
<div id="form-row-left">Posting Date:</div>
<div id="form-row-right">
<div id="form-row-date">
<div id="date-start-label">Start:</div>
<div id="date-start-box">
<form:input path="startDate" size="10"></form:input>
<script type="text/javascript">
new tcal ({
'formname': 'commandBean',
'controlname': 'startDate'
});
</script>
</div>
<div id="date-end-label">End:</div>
<div id="date-end-box">
<form:input path="endDate" size="10" ></form:input>
<script type="text/javascript">
new tcal ({
'formname': 'commandBean',
'controlname': 'endDate'
});
</script>
</div>
</div>
</div>
</div>
<div id="form-submit-row">
<div id="submit-left"><input name="submit" id="button_style" value="Search" type="submit" /></div>
<div id="submit-right"><input onclick="clearBillingCache();" name="reset" id="button_style" value="Clear" type="button" /></div>
</div>
</form:form>
...
function clearBillingCache(){
window.location = "billingSearchClear.html"
}
...
@RequestMapping(value = "/billingSearchClear.html", method = RequestMethod.GET)
public String clearCache(HttpServletRequest request) {
String returnVal = "redirect:/billingSearch.html";
request.getSession().setAttribute("stickyCarrier", null);
request.getSession().setAttribute("stickyAgency", null);
request.getSession().setAttribute("stickyGroup", null);
...
request.getSession().setAttribute("stickyStartDate", null);
request.getSession().setAttribute("stickyEndDate", null);
return returnVal;
}
我已經試過是以下內容添加到JSP頁面,因此它在偶數點擊onload事件調用:
<%!
int Counter=0;
%>
。 .. <% 如果(++計數器%2!= 0){
%>
<body onload="clearBillingCache()">
<%
}
else
{
%>
<body>
<%
}
System.out.println(" Counter = "+Counter);
%>
它甚至點擊刷新,但字段仍然凍結,直到我點擊「清除」按鈕。
而我打印出會話值,它們都是空的。
以前有沒有人遇到過這個問題?如何在沒有點擊清除表單的情況下每次都正確加載表單?
「的一些代碼行」始終是一個壞的問題。你認爲這些線是問題嗎?如果是這樣,爲什麼?你有什麼嘗試和排除或確認你可以添加爲問題的詳細信息?如果你不確定這些行是否重要,那麼添加它們是任意的,因此是一個壞主意。如果可以的話,克隆這個項目,運行克隆副本,並開始刪除代碼,直到達到重現錯誤的最低條件。然後從那裏拿走? – 2014-11-25 00:10:33