Ace: هل تستخدم برامج تحرير Ace متعددة للنشر بتنسيق HTML؟

تم إنشاؤها على ١٧ أكتوبر ٢٠١٧  ·  4تعليقات  ·  مصدر: ajaxorg/ace

أهلا. أخطط لاستخدام محرر Ace لتطبيق ويب ، لكنني بحاجة إلى محررين متميزين ينشران البيانات إلى نظام الواجهة الخلفية الذي يعمل على تشغيل التطبيق (Flask).

من السهل إلى حد ما إنشاء محررين في Ace ، لكن المشكلة هي أن أسماء textarea لا يمكن تغييرها (حسب علمي) ، وبالتالي أقوم بإنشاء محررين "اثنين" بنفس اسم textarea. لا يمكن نشرها في نموذج إلى Flask ، بقدر ما أستطيع رؤيتها ، نظرًا لأن الأسماء متشابهة ، وبالتالي سيكون هناك تصادم.

هل من أفكار حول كيفية تغيير اسم منطقة النص بحيث يمكن نشرها ككيانين منفصلين إلى Flask بدون مشكلة؟ المدخلات هي كائنات JSON.

التعليق الأكثر فائدة

تحتاج إلى الاحتفاظ بمنطقة النص الأصلية وتحديث قيمتها عند الإرسال بهذا الشكل

<form method="get" action="#">
    <div>
        <textarea name=t1></textarea>
    </div>
    <div>
        <textarea name=t2></textarea>
    </div>
    <div>
        <input type=submit>
    </div>
</form>
<div id=log></div>
<script src="http://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<script>
    function createEditor(name) {
        // find the textarea
        var textarea = document.querySelector("form textarea[name=" + name + "]");

        // create ace editor 
        var editor = ace.edit()
        editor.container.style.height = "100px"
        editor.session.setValue(textarea.value)
        // replace textarea with ace
        textarea.parentNode.insertBefore(editor.container, textarea)
        textarea.style.display = "none"
        // find the parent form and add submit event listener
        var form = textarea
        while (form && form.localName != "form") form = form.parentNode
        form.addEventListener("submit", function() {
            // update value of textarea to match value in ace
            textarea.value = editor.getValue()
        }, true)
    }
    createEditor("t1")
    createEditor("t2")
</script>

ال 4 كومينتر

مرحبًا ، ما الذي تقصده بـ textarea names ؟ لا يُنشئ ace textareas يمكن استخدامه في النموذج.

nightwing إذن كيف يمكنني الحصول على المحتوى من محرر Ace (كما يمكن وسيتم تحريره بواسطة الأشخاص) المقدم في POST عبر نموذج HTML؟ عندما أعني "أسماء منطقة النص" ، أشير إلى سمة "اسم" html التي يمكن استخدامها في textareas ، مما يجعل من الممكن أخذ المدخلات داخل textarea في نص برمجي خلفي وإجراء تغييرات الخلفية مع الاستعلامات وما شابه ذلك. 🤔

تحتاج إلى الاحتفاظ بمنطقة النص الأصلية وتحديث قيمتها عند الإرسال بهذا الشكل

<form method="get" action="#">
    <div>
        <textarea name=t1></textarea>
    </div>
    <div>
        <textarea name=t2></textarea>
    </div>
    <div>
        <input type=submit>
    </div>
</form>
<div id=log></div>
<script src="http://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<script>
    function createEditor(name) {
        // find the textarea
        var textarea = document.querySelector("form textarea[name=" + name + "]");

        // create ace editor 
        var editor = ace.edit()
        editor.container.style.height = "100px"
        editor.session.setValue(textarea.value)
        // replace textarea with ace
        textarea.parentNode.insertBefore(editor.container, textarea)
        textarea.style.display = "none"
        // find the parent form and add submit event listener
        var form = textarea
        while (form && form.localName != "form") form = form.parentNode
        form.addEventListener("submit", function() {
            // update value of textarea to match value in ace
            textarea.value = editor.getValue()
        }, true)
    }
    createEditor("t1")
    createEditor("t2")
</script>

أوه ، شكرا نايت وينغ! سأحاول ذلك لاحقًا وأعلمك كيف سأستمر :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات