-1

我在很多文本输入字段上使用 Jquery datepicker。它不工作。我在一个包含文件中有我的 javascrippt 并做一个 savecontent 以便我可以使用 cfhtmlhead。开发工具控制台显示错误;

<script type="text/javascript">/* <![CDATA[ */
ColdFusion.Event.registerOnLoad(initCandidateScript,null,false,true);
// Uncaught ReferenceError: initCandidateScript is not defined  <---------console error
/* ]]> */
</script>



<cfajaximport tags="cfgrid,cfform,cfinput-autosuggest,cfinput-  datefield,cftextarea,cfwindow">
<style>
#ui-datepicker-div { z-index:10000; } 
</style>
<cfsavecontent variable="JobAdScript">
<script language=JavaScript src="picker.js"></script> 
<script language=JavaScript src="JobAdsJavascript.js"></script> 
</cfsavecontent>
<cfhtmlhead text="#JobAdScript#" />
<cfset ajaxOnLoad("initCandidateScript")>

这段代码在include js文件中;

$(document).ready(function () {
    function initCandidateScript() {
        $(function () {
            alert('starting');
            $('input.datestuff').datepicker({
                dateFormat: 'yy/mm/dd'
            });
        });
    }
4

1 回答 1

0

您需要将initCandidateScript定义移到文档就绪事件回调之外。在 DOM 准备好之前延迟函数定义是没有意义的。

除此之外,CF JavaScript 框架似乎会延迟该函数的执行,直到一切准备就绪并加载。

因此,只需在 .js 文件中定义这样的函数 - 无需使用 DOM 就绪事件包装它。

function initCandidateScript() {
    $(function() {
        alert('starting');
        $('input.datestuff').datepicker({
            dateFormat: 'yy/mm/dd'
        });
    });
}

实际上,您可以进一步简化它,因为现在您的函数中有另一个DOM 就绪回调,您不需要它:

function initCandidateScript() {
    $('input.datestuff').datepicker({
        dateFormat: 'yy/mm/dd'
    });
}
于 2013-03-21T13:12:16.527 回答