struts2、ajax和注入的jquery标记
我正在使用struts2.3和struts2 jQuery插件 我必须使用ajax动态加载操作的结果。struts2、ajax和注入的jquery标记,jquery,ajax,struts2,struts2-jquery,Jquery,Ajax,Struts2,Struts2 Jquery,我正在使用struts2.3和struts2 jQuery插件 我必须使用ajax动态加载操作的结果。 在JSP中有一些普通的html和jQuery标记 <sj:datepicker cssClass="dataScadenzaDiv" id="dataScadenzaDiv" name="dataScadenza" maxDate="-1d" label="data scadenza" theme="xhtml"/> 一切正常,ajax注入的代码如下: &l
在JSP中有一些普通的html和jQuery标记
<sj:datepicker cssClass="dataScadenzaDiv" id="dataScadenzaDiv"
name="dataScadenza" maxDate="-1d" label="data scadenza" theme="xhtml"/>
一切正常,ajax注入的代码如下:
<!-- lotto dpi -->
<tr>
<td class="tdLabel"><label for="lotto" class="label">Lotto:</label></td>
<td><input type="text" name="txtLotto" size="15" value="" id="lotto"/></td>
</tr>
<!-- tGestDataScadenza -->
<div id="dataScadenzaAjax"></div>
<input type="text" name="dataScadenza" value="" id="dataScadenzaDiv" class="dataScadenzaDiv" theme="xhtml"/><script type='text/javascript'>
jQuery(document).ready(function () {
jQuery.struts2_jquery_ui.initDatepicker(false);
});
jQuery(document).ready(function () {
var options_dataScadenzaDiv = {};
options_dataScadenzaDiv.showOn = "both";
options_dataScadenzaDiv.buttonImage = "/RadioFrequenza2/struts /js/calendar.gif";
options_dataScadenzaDiv.maxDate = "-1d";
options_dataScadenzaDiv.jqueryaction = "datepicker";
options_dataScadenzaDiv.id = "dataScadenzaDiv";
options_dataScadenzaDiv.name = "dataScadenza"; jQuery.struts2_jquery_ui.bind(jQuery('#dataScadenzaDiv'),options_dataScadenzaDiv );
});
</script>
大乐透:
jQuery(文档).ready(函数(){
jQuery.struts2\u jQuery\u ui.initDatepicker(false);
});
jQuery(文档).ready(函数(){
var options_dataScadenzaDiv={};
选项\u dataScadenzaDiv.shown=“两者”;
选项_dataScadenzaDiv.buttonImage=“/RadioFrequenza2/struts/js/calendar.gif”;
选项\u dataScadenzaDiv.maxDate=“-1d”;
选项\u dataScadenzaDiv.jqueryaction=“日期选择器”;
选项\u dataScadenzaDiv.id=“dataScadenzaDiv”;
options_dataScadenzaDiv.name=“dataScadenza”jQuery.struts2_jQuery_ui.bind(jQuery('dataScadenzaDiv'),options_dataScadenzaDiv);
});
但是现在
被呈现为普通文本
和点作为日期选择器。我认为注入的javascript没有被执行
我能做什么?问题是struts2 jQuery插件正在生成一个脚本,该脚本将在DOM就绪后运行:
jQuery(document).ready(function(){…
呈现页面后,会触发ready事件,但在AJAX调用后,不会触发
那么您有两种解决方案:
jquery(document).ready(函数(){
(但我想它不会完全可靠)
然后将其作为AJAX返回的JSP片段的最后一行触发
<sj:datepicker cssClass="dataScadenzaDiv" id="dataScadenzaDiv"
name="dataScadenza" maxDate="-1d"
label="data scadenza" theme="xhtml"/>
<script>
$.triggerReady();
</script>
请记住,最初在ready事件中运行的其他处理程序也将再次触发,因此请谨慎使用。您是否已在头部插入标记?javascript控制台中是否有任何日志消息?
<input type = "button"
value = "trigger ready event"
onclick = "$.triggerReady();" />
// Overrides jQuery-ready and makes it triggerable with $.triggerReady
// This script needs to be included before other scripts using the jQuery-ready.
// Tested with jQuery 1.10.1
(function(){
var readyList = [];
// Store a reference to the original ready method.
var originalReadyMethod = jQuery.fn.ready;
// Override jQuery.fn.ready
jQuery.fn.ready = function(){
if(arguments.length && arguments.length > 0 && typeof arguments[0] === 'function') {
readyList.push(arguments[0]);
}
// Execute the original method.
originalReadyMethod.apply( this, arguments );
};
// Used to trigger all ready events
$.triggerReady = function() {
$(readyList).each(function(){this();});
};
})();
/* This part is for demo only and should be removed */
$( document ).ready(function(){
alert('document.ready is fired!');
});