Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SilverStripe 2.4.7中使用Javascript_Javascript_Jquery_Silverstripe - Fatal编程技术网

在SilverStripe 2.4.7中使用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

我正在将SilverStripe 2.4.7与DataObjectManager一起使用。我试图为弹出窗口添加我自己的自定义验证,但奇怪的事情不断发生。当我添加自己的Javascript类时,弹出窗口上的日期选择器停止工作。我不明白为什么,因为我添加的Javascript没有应用到数据选择器

我正在使用

    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加载。为此,

  • 开放式萤火虫
  • 点击“脚本”
  • 单击“内联”,将出现一个下拉列表。如果键入jq,则将显示包含jq名称的所有文件。它会让你知道什么是负荷
  • 现在回到您的问题,如果您想使用现有的已加载JQuery,请添加带有验证代码的自定义文件。否则,下面是一个如何显示自定义时间选择器()的示例

    • 首先,如果您计划使用自己的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')

    这里的azeem-timepicket.js包含要添加到字段中的自定义代码

    //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.