0

こんにちは私は私のアプリの1つでdjangoコメントを使用しています。コメントフレームワークをニーズに合わせてカスタマイズしました。コメントのテキストエリアを拡張可能にするためにdojoを使用するまで、すべてが正しく機能します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は、次のようにテキストエリアに一連のクラスを追加します。しかし、それでもIDがあり、テキストエリアですよね。

<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>

この質問の回答を読んだ後:UltimateResizingTextareaを検索します。これが最善の方法かもしれないと思いましたが、残念ながらそうではありません。自分だけなのかしら。これを正しく行う方法はありますか、それとも別の方法を使用してフィールドを拡張可能にする必要がありますか。

編集

dojoを使用すると、投稿は次のようになります。

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
4

1 に答える 1

0

Dojoはテキストエリアの名前を上書きします。コメントだけでなく、id_commentと呼びました。それを変更した後、投稿は問題なく表示され、すべてが正常に機能します。

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

    dojo.ready(function(){
        var textarea = new dijit.form.Textarea({
            name: "comment",
            style: "width:200px;"
    }, "id_comment");
});
于 2012-05-16T19:04:42.710 に答える