Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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
Javascript jQuery.You确定插件不工作吗_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript jQuery.You确定插件不工作吗

Javascript jQuery.You确定插件不工作吗,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,过去几天我一直在尝试正确安装jQuery。你确定吗?结果不一致的插件。 我决定使用这个插件是基于这篇文章的信息:。我还阅读了GitHub上插件的文档: 以下是我所做的: 我刷新页面 我一直在将custom.js文件中的代码复制到chrome中的控制台中 我把表格改一下 我要么单击刷新按钮,要么单击另一个站点链接,导航而不保存 我的结果是:有时我会收到警告信息,但更多的时候我不会。我也无法复制或理解何时收到警报。有时它可能会在我第一次点击离开页面时出现,而在其他时间,它可能会在我点击几次时出现 j

过去几天我一直在尝试正确安装jQuery。你确定吗?结果不一致的插件。 我决定使用这个插件是基于这篇文章的信息:。我还阅读了GitHub上插件的文档:

以下是我所做的:

  • 我刷新页面
  • 我一直在将custom.js文件中的代码复制到chrome中的控制台中
  • 我把表格改一下
  • 我要么单击刷新按钮,要么单击另一个站点链接,导航而不保存
  • 我的结果是:有时我会收到警告信息,但更多的时候我不会。我也无法复制或理解何时收到警报。有时它可能会在我第一次点击离开页面时出现,而在其他时间,它可能会在我点击几次时出现

    javascripts/application.js:

    // This is a manifest file that'll be compiled into application.js, which will include all the files
    // listed below.
    //
    // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
    // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
    //
    // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
    // compiled file.
    //
    // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
    // about supported directives.
    //
    //= require jquery
    //= require jquery_ujs
    //= require bootstrap-sprockets
    //= require turbolinks
    //= require areyousure/areyousure
    //= require_tree .
    
    javascripts/areyousure/areyousure.js:

    /*!
     * jQuery Plugin: Are-You-Sure (Dirty Form Detection)
     * https://github.com/codedance/jquery.AreYouSure/
     *
     * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
     * Dual licensed under the MIT or GPL Version 2 licenses.
     * http://jquery.org/license
     *
     * Author:  chris.dance@papercut.com
     * Version: 1.9.0
     * Date:    13th August 2014
     */
    (function($) {
    
      $.fn.areYouSure = function(options) {
    
        var settings = $.extend(
          {
            'message' : 'You have unsaved changes!',
            'dirtyClass' : 'dirty',
            'change' : null,
            'silent' : false,
            'addRemoveFieldsMarksDirty' : false,
            'fieldEvents' : 'change keyup propertychange input',
            'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])"
          }, options);
    
        var getValue = function($field) {
          if ($field.hasClass('ays-ignore')
              || $field.hasClass('aysIgnore')
              || $field.attr('data-ays-ignore')
              || $field.attr('name') === undefined) {
            return null;
          }
    
          if ($field.is(':disabled')) {
            return 'ays-disabled';
          }
    
          var val;
          var type = $field.attr('type');
          if ($field.is('select')) {
            type = 'select';
          }
    
          switch (type) {
            case 'checkbox':
            case 'radio':
              val = $field.is(':checked');
              break;
            case 'select':
              val = '';
              $field.find('option').each(function(o) {
                var $option = $(this);
                if ($option.is(':selected')) {
                  val += $option.val();
                }
              });
              break;
            default:
              val = $field.val();
          }
    
          return val;
        };
    
        var storeOrigValue = function($field) {
          $field.data('ays-orig', getValue($field));
        };
    
        var checkForm = function(evt) {
    
          var isFieldDirty = function($field) {
            var origValue = $field.data('ays-orig');
            if (undefined === origValue) {
              return false;
            }
            return (getValue($field) != origValue);
          };
    
          var $form = ($(this).is('form')) 
                        ? $(this)
                        : $(this).parents('form');
    
          // Test on the target first as it's the most likely to be dirty
          if (isFieldDirty($(evt.target))) {
            setDirtyStatus($form, true);
            return;
          }
    
          $fields = $form.find(settings.fieldSelector);
    
          if (settings.addRemoveFieldsMarksDirty) {              
            // Check if field count has changed
            var origCount = $form.data("ays-orig-field-count");
            if (origCount != $fields.length) {
              setDirtyStatus($form, true);
              return;
            }
          }
    
          // Brute force - check each field
          var isDirty = false;
          $fields.each(function() {
            $field = $(this);
            if (isFieldDirty($field)) {
              isDirty = true;
              return false; // break
            }
          });
    
          setDirtyStatus($form, isDirty);
        };
    
        var initForm = function($form) {
          var fields = $form.find(settings.fieldSelector);
          $(fields).each(function() { storeOrigValue($(this)); });
          $(fields).unbind(settings.fieldEvents, checkForm);
          $(fields).bind(settings.fieldEvents, checkForm);
          $form.data("ays-orig-field-count", $(fields).length);
          setDirtyStatus($form, false);
        };
    
        var setDirtyStatus = function($form, isDirty) {
          var changed = isDirty != $form.hasClass(settings.dirtyClass);
          $form.toggleClass(settings.dirtyClass, isDirty);
    
          // Fire change event if required
          if (changed) {
            if (settings.change) settings.change.call($form, $form);
    
            if (isDirty) $form.trigger('dirty.areYouSure', [$form]);
            if (!isDirty) $form.trigger('clean.areYouSure', [$form]);
            $form.trigger('change.areYouSure', [$form]);
          }
        };
    
        var rescan = function() {
          var $form = $(this);
          var fields = $form.find(settings.fieldSelector);
          $(fields).each(function() {
            var $field = $(this);
            if (!$field.data('ays-orig')) {
              storeOrigValue($field);
              $field.bind(settings.fieldEvents, checkForm);
            }
          });
          // Check for changes while we're here
          $form.trigger('checkform.areYouSure');
        };
    
        var reinitialize = function() {
          initForm($(this));
        }
    
        if (!settings.silent && !window.aysUnloadSet) {
          window.aysUnloadSet = true;
          $(window).bind('beforeunload', function() {
            $dirtyForms = $("form").filter('.' + settings.dirtyClass);
            if ($dirtyForms.length == 0) {
              return;
            }
            // Prevent multiple prompts - seen on Chrome and IE
            if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
              if (window.aysHasPrompted) {
                return;
              }
              window.aysHasPrompted = true;
              window.setTimeout(function() {window.aysHasPrompted = false;}, 900);
            }
            return settings.message;
          });
        }
    
        return this.each(function(elem) {
          if (!$(this).is('form')) {
            return;
          }
          var $form = $(this);
    
          $form.submit(function() {
            $form.removeClass(settings.dirtyClass);
          });
          $form.bind('reset', function() { setDirtyStatus($form, false); });
          // Add a custom events
          $form.bind('rescan.areYouSure', rescan);
          $form.bind('reinitialize.areYouSure', reinitialize);
          $form.bind('checkform.areYouSure', checkForm);
          initForm($form);
        });
      };
    })(jQuery);
    
    我创建了javascripts/custom.js:

    $('form').areYouSure( {'message':'You have unsaved changes on this page. Do you want to leave this page and discard your changes or stay on this page?'} );
    

    通过移除,移除了
    TurboLink
    /=需要
    应用程序.js
    文件中的TurboLink

    (目前为2018年1月)


    jquery.you确定只有当
    turbolinks
    处于活动状态时,页面才会刷新。

    您在哪里包括
    custom.js
    文件?另外,演示程序将代码包装在
    $(function(){}
    @kinduff…我以为我已经在application.js文件中将它作为一个/=要求包含了。它还需要在其他地方吗?我还将它包装在一个函数中。是的,你可以将它作为一个//=,在示例代码中没有看到,这就是我为什么问的原因。看起来像是一个js错误,与Rails没有任何关系。我在turbolinks w中遇到了问题对于一些JS函数,我无法验证。@kinduff…您对我可以在Rails中做些什么来解决这个问题有什么建议吗?请尝试删除TurboLink