【问题标题】:Difficulty with jQuery Validation plugin and Django AdminjQuery Validation 插件和 Django Admin 的困难
【发布时间】:2011-06-12 21:19:06
【问题描述】:

我正在使用 Django 1.2.4 管理界面、jQuery 1.4.4 和 jQuery Validation plugin。我看到了一些奇怪的问题。

jQuery 验证插件说它适用于 jQuery 1.4.2。它会导致我使用 1.4.4 的问题吗?我也在使用 jQuery UI,它需要 1.4.4。如何同时使用它们?

以下是我的管理页面中包含的脚本:

    # this will cause both jQuery 1.4.2 and 1.4.4 to be included. Not sure if that's a problem or not.
    # (jQ 1.4.2 is in the admin by default, but jQ-ui wants 1.4.4.)
    js = ("js/foo-slider.js", 
          "js/lib/jquery-1.4.4.min.js",
          "js/lib/jquery.validate.pack.js",
          "js/lib/sprintf.js",
          "js/lib/jquery-ui-slider/jquery.ui.core.js",
          "js/lib/jquery-ui-slider/jquery.ui.widget.js",
          "js/lib/jquery-ui-slider/jquery.ui.mouse.js",
          "js/lib/jquery-ui-slider/jquery.ui.slider.js",
          )

Django Admin 命名空间 jQuery 到 django.jQuery 以避免破坏其他使用 $ 符号的脚本。 (Django 管理员使用 jQuery 1.4.2,它也包含在页面中。)在我的 foo-slider.js 脚本的顶部,我有一行:

var $ = django.jQuery;

如果我包含 jQuery 验证插件脚本,我会在 Firebug 控制台上看到以下内容:

>>> $
function()

然后我将以下代码行添加到我的自定义 JS 文件中:

$("form").validate();

然后,我在 Firebug 控制台中得到了这个:

>>> $
anonymous()

这令人沮丧,并且可能与以后的问题有关。

我添加了这段代码:

   $("form").validate();
   $(".required").nextAll('input').rules('add', {
           required: true 
      });

但没有发生验证。

标记看起来像:

<form id="foo_form" method="post" action="" enctype="multipart/form-data"><div style="display: none;">

<!-- ... -->

  <fieldset class="module aligned ">    
        <div class="form-row foo">
                <div>
                        <label class="required" for="id_foo">Foo:</label>

                        <input type="text" name="foo" value="80" class="vIntegerField valid" id="id_foo">

                        <p class="help">help text</p>
                </div>
        </div> 

       <!-- ... --->
</form>

然后我在方法中添加以下代码:

   $(sprintf("#%s, #%s, #%s", id_foo, id_bar, id_baz)).rules("add",
   {
       range: [slider.slider('option', 'min'), slider.slider('option', 'max')],
   });

(sprintf 就像它听起来的那样;id_* 参数是&lt;input&gt; 元素的 id。)现在进行验证。到底是怎么回事?我做错了吗?

【问题讨论】:

    标签: javascript jquery django django-admin jquery-validate


    【解决方案1】:

    noconflict 页面可能会有所帮助?而不是

    var $ = django.jQuery;
    

    试试

    (function($) { 
      //code that expects the $ alias
    })(django.jQuery);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      相关资源
      最近更新 更多