2014-01-10 40 views
0

最近发生在我的网页上,即使是jsp页面元素已经在那里,$("#elementId").change()不起作用,但$(document).on("change" "elementId"呢。看起来像页面document正在懒洋洋地准备好,因此页面元素上的直接事件处理程序不会被添加。任何提示?

ps:我说的元素不是动态生成的。

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
<%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
<head> 
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.9.1.min.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/js/receipt.js"></script> 
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/myCss.css" > 
<title>Generate Report</title> 
<meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 
</head> 

<body> 
<form:form action="getReceipt.html" commandName="viewQuote"> 
<div class="main_div"> 
<div> 
    <table> 
     <tr><td valign="top" align="left"> 
       Res Number 
      </td> 
      <td valign="top" align="left" > 
       <input id="reservatnNo" type="text" name="reservatnNo" value=""> 
      </td> 
      </tr> 
     </table> 
</div> 

<div> 
    <table> 
     <tr><td> 
       <button id="generateReportButton" type="submit"> 
        Submit Form 
       </button> 
      </td> 
     </tr> 
    </table> 
</div> 

</div> 
</form:form> 
</body> 

的Javascript

$(document).ready(function() { 
    jQuery.ajaxSettings.traditional = true; 
}); 


$(document).on("change", "#reservatnNo", function(event) { 
//$('#reservatnNo').change(function(){ 
    alert("changeddd"); 
}); 
+0

你能在这里分享你的代码吗? –

+1

动态加载'#elementId'。 –

+0

@RajaprabhuAravindasamy不,不像我说的那样动态。我只是使用锚链接从以前的网页调用网页。 – user2918640

回答

2

确保$("#elementId").change()里面$(document).ready()功能。否则$(“#elementId”)返回空的jQuery对象(因为控件尚不存在),并且没有事件被注册。

或者外部ready方法,人们可以使用$(document).on()或旧的方法$(document).bind()来实现可靠的事件处理。

+2

你可以评论这个。 –

+0

我知道,把内部准备好是一种做法。但我很好奇几天前他们是如何在外面准备工作的。 – user2918640

+0

如果你把它放在外面,那么存在一个尚未在DOM中创建的控件注册事件的风险 – Cris

相关问题