在SilverStripe 2.4.7中使用Javascript
我正在将SilverStripe 2.4.7与DataObjectManager一起使用。我试图为弹出窗口添加我自己的自定义验证,但奇怪的事情不断发生。当我添加自己的Javascript类时,弹出窗口上的日期选择器停止工作。我不明白为什么,因为我添加的Javascript没有应用到数据选择器 我正在使用在SilverStripe 2.4.7中使用Javascript,javascript,jquery,silverstripe,Javascript,Jquery,Silverstripe,我正在将SilverStripe 2.4.7与DataObjectManager一起使用。我试图为弹出窗口添加我自己的自定义验证,但奇怪的事情不断发生。当我添加自己的Javascript类时,弹出窗口上的日期选择器停止工作。我不明白为什么,因为我添加的Javascript没有应用到数据选择器 我正在使用 function getRequirementsForPopup() { Requirements::javascript('mysite/code/js/jquery.j
function getRequirementsForPopup() {
Requirements::javascript('mysite/code/js/jquery.js');
Requirements::javascript('mysite/code/js/validation.js');
}
在中添加我自己的Javascript类。这在另一个弹出窗口中运行良好,但该弹出窗口没有日期选择器。我的印象是,向CMS添加自定义Javascript没有问题,所以我想知道这是否与DataObjectmanager或日期选择器中的Javascript冲突
如果有人能给我任何建议,我将不胜感激。我看到过其他一些关于SilverStripe中Javascript的帖子,但它们没有说明这里发生了什么
谢谢。dataobject\u管理器加载自己的jquery文件。当您添加自己的文件时,它会与dataobject_manager中的现有文件发生冲突 您可以看到哪些库正在从firebug加载。为此,
- 首先,如果您计划使用自己的jquery文件,则必须停止/阻止dataobject_manager中的jquery文件。在getRequirementsForPopup()函数中类似于此。注意:这取决于正在加载的文件以及在firebug中看到加载的文件后要禁用的文件。 要求::块(“http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"); 需求::block(“dataobject_manager/javascript/dom_jquery_ui.js”); 需求::block(“sapphire/thirdparty/jqueryui/jquery-ui-1.8rc3.custom.js”); 需求::block(“dataobject_manager/javascript/dataobject_manager.js”)` 需求::block(“dataobject_manager/javascript/dataobject_manager_popup.js”)
- 然后,您必须包含自己的jquery文件
需求::javascript('azeem/javascript/jqueryui/js/jquery-1.7.2.min.js');
要求::javascript('azeem/javascript/jqueryui/js/jquery-ui-1.8.23.custom.min.js');
需求::javascript('azeem/javascript/timepicker/jqueryui timepicker addon.js');
需求::javascript('azeem/javascript/timepicker/azeem timepicker.js')
要求::css('azeem/javascript/jqueryui/css/smoothness/jquery-ui-1.8.23.custom.css'); 要求::css('azeem/css/timepicker/jqueryui timepicker addon.css')
//JQuery UI datepicker and timepicker for azeem Event End Date/Time Field
$j('#DataObjectManager_Popup_AddForm_EventEndDate-date, #DataObjectManager_Popup_DetailForm_EventEndDate-date').datepicker({
dateFormat: 'dd/mm/yy'
});
$j('#DataObjectManager_Popup_AddForm_EventStartDate-time, #DataObjectManager_Popup_DetailForm_EventStartDate-time').timepicker({
timeFormat: 'hh:mm'
});
- 在getCMSFields()函数中,如果使用的是日期/日期时间字段,则必须禁用默认的日期选择器选项。 $startDate=新日期时间字段(“startDate”、“开始日期/时间”); $startDateField=$startDate->getDateField(); $startDateField->setConfig('showcalendar',false); $startTimeField=$startDate->getTimeField(); $startTimeField->setConfig('showdropdown',false); $fields->addFieldsToTab('Root.Main',$startDate)
- 您可以在firebug中再次验证是否正在加载自定义文件和所有其他文件。同样的事情也可以用于您自己的验证
希望能有所帮助。听起来像是一个简单的javascript错误,您是否检查了控制台输出?是的,但没有输出错误。服务器日志也是如此。这就是为什么当出现这样的Javascript错误时,我通常会看到错误。谢谢你的回答。它回答了我所有的问题+1.