首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery验证插件和Django管理的困难

jQuery验证插件和Django管理的困难
EN

Stack Overflow用户
提问于 2011-01-21 10:02:23
回答 1查看 1K关注 0票数 0

我使用的是Django 1.2.4管理界面、jQuery 1.4.4和jQuery Validation plugin。我发现了一些奇怪的问题。

jQuery验证插件说它可以与jQuery 1.4.2一起工作。会不会是我使用的1.4.4造成了问题?我也在使用jQuery UI,它需要1.4.4。我如何才能同时使用它们?

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

代码语言:javascript
复制
    # 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 admin使用jQuery 1.4.2,它也包含在页面中。)在我的foo-slider.js脚本的顶部,我有一行代码:

代码语言:javascript
复制
var $ = django.jQuery;

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

代码语言:javascript
复制
>>> $
function()

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

代码语言:javascript
复制
$("form").validate();

然后,我在Firebug控制台中得到如下内容:

代码语言:javascript
复制
>>> $
anonymous()

这是令人沮丧的,可能与后来的问题有关。

我添加了以下代码:

代码语言:javascript
复制
   $("form").validate();
   $(".required").nextAll('input').rules('add', {
           required: true 
      });

但是不会发生验证。

标记看起来像这样:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
   $(sprintf("#%s, #%s, #%s", id_foo, id_bar, id_baz)).rules("add",
   {
       range: [slider.slider('option', 'min'), slider.slider('option', 'max')],
   });

( <input>听起来像是在做什么;sprintf参数是sprintf元素的ids。)现在验证发生了。怎么一回事?我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2011-01-21 10:24:43

也许noconflict页面可以提供一些帮助?而不是

代码语言:javascript
复制
var $ = django.jQuery;

试一试

代码语言:javascript
复制
(function($) { 
  //code that expects the $ alias
})(django.jQuery);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4754733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档