【问题标题】:Why does a DOJO tools text area control break my forms为什么 DOJO 工具文本区域控件会破坏我的表单
【发布时间】:2012-05-03 16:23:56
【问题描述】:

您好,我在我的一个应用程序中使用了 django cmets。我定制了 cmets 框架以满足我的需要。一切正常,直到我使用 dojo 使 cmets 的 textarea 可扩展 http://dojotoolkit.org/reference-guide/1.7/dijit/form/Textarea.html#dijit-form-textarea。添加脚本后,表单提交后会抛出错误:此字段是必需的。因此,django 似乎不再将 textarea 识别为表单的一部分。

在我的模板中,我使用标准的注释标签:

{% render_comment_form for event %}
{% render_comment_list for event %}

当我添加 dojo 脚本时,textarea 变得可扩展,但表单不再传递它的值。

dojo.require("dijit.form.Textarea");

dojo.ready(function(){
    var textarea = new dijit.form.Textarea({
        name: "id_comment",
        style: "width:200px;"
    }, "id_comment");
});

dojo 将一堆类添加到 textarea 中,使其如下所示。但它仍然有它的 id 并且它仍然是一个 textarea 不是吗?

<textarea autocomplete="off" data-dojo-attach-point="focusNode,containerNode,textbox" name="id_comment" class="dijitTextBox dijitTextArea dijitExpandingTextArea" style="overflow-y: hidden; overflow-x: auto; -moz-box-sizing: border-box; width: 200px; height: 36px;" tabindex="0" id="id_comment" widgetid="id_comment" value="" rows="1"></textarea>

阅读此问题的答案后:Searching for the Ultimate Resizing Textarea。我认为这可能是最好的方法,但不幸的是它不是。 我想知道是不是只有我一个人。有没有办法做到这一点,或者我应该使用不同的方法来使字段可扩展。

编辑

使用道场,帖子看起来像这样:

content_type    cylebrations.image
csrfmiddlewaretoken 24827190efbb5b7793aeadaf8276beed
honeypot    
id_comment ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
object_pk   4
post    Post
security_hash   8a091cfbf1e309627369069d4f71c21b33843a85
timestamp   1335209980

没有道场:

comment eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
content_type    cylebrations.image
csrfmiddlewaretoken 24827190efbb5b7793aeadaf8276beed
honeypot    
object_pk   4
post    Post
security_hash   e02d8261f528cfc0f22ee30ced820cfbb80715bc
timestamp   1335210114

【问题讨论】:

  • 您可以在提交评论时拦截(使用 Firebug)帖子数据吗?它在那里吗?具体查找是否存在,且其值不为空。

标签: django dojo django-comments


【解决方案1】:

Dojo 会覆盖文本区域的名称。我称它为 id_comment,而不仅仅是评论。更改后,帖子看起来很好,一切正常:

    dojo.require("dijit.form.Textarea");

    dojo.ready(function(){
        var textarea = new dijit.form.Textarea({
            name: "comment",
            style: "width:200px;"
    }, "id_comment");
});

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2011-03-25
    • 2011-08-19
    • 2017-12-10
    • 2013-06-25
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多