ΠΡΠΈΠ²Π΅Ρ. Π― ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ace Editor Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½Ρ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Flask).
Π‘ΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π² Ace Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ (Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ), ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠΎΠ·Π΄Π°Ρ Β«Π΄Π²Π°Β» ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠΎΡΠΌΠ΅ Π²ΠΎ Flask, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ.
ΠΡΠ±ΡΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Β«ΡΡΡΠ½ΠΎΡΡΠΈΒ» Π² Flask? ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ JSON.
ΠΡΠΈΠ²Π΅Ρ, ΡΡΠΎ ΡΡ ΠΈΠΌΠ΅Π΅ΡΡ Π² Π²ΠΈΠ΄Ρ ΠΏΠΎΠ΄ textarea names
? ace Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΎΡΠΌΠ΅.
@nightwing ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Ace (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π»ΡΠ΄ΡΠΌΠΈ), ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² POST ΡΠ΅ΡΠ΅Π· HTML-ΡΠΎΡΠΌΡ? ΠΠΎΠ³Π΄Π° Ρ ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρ Β«ΠΈΠΌΠ΅Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉΒ», Ρ ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡ html Β«ΠΈΠΌΡΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π² Π±ΡΠΊΡΠ½Π΄-ΡΠΊΡΠΈΠΏΡΠ΅ ΠΈ Π²Π½ΠΎΡΠΈΡΡ Π±ΡΠΊΡΠ½Π΄-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. π€
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
<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>
Π, ΡΠΏΠ°ΡΠΈΠ±ΠΎ, Π½ΠΎΡΠ½ΠΈΠΊ! Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΡΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈ Π΄Π°ΠΌ Π²Π°ΠΌ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ :)
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.