我正在使用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_*
参数是<input>
元素的id。)现在验证发生了。到底是怎么回事?我做错了吗?
答案 0 :(得分:0)
也许noconflict页可能会有所帮助?而不是
var $ = django.jQuery;
试
(function($) {
//code that expects the $ alias
})(django.jQuery);