Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ace编辑器-传递模式以形成输入_Javascript_Ruby_Sinatra_Erb_Ace Editor - Fatal编程技术网

Javascript ace编辑器-传递模式以形成输入

Javascript ace编辑器-传递模式以形成输入,javascript,ruby,sinatra,erb,ace-editor,Javascript,Ruby,Sinatra,Erb,Ace Editor,好的,在我的js中,我将输入值设置为js值 $('input[name="mode"]').val(editor.session.getMode().$id); 这在我的新视图形式中很好地工作 <form id="snippetForm" action="/snippets/new" method="POST"> <input class="hidden" type="text" name="mode" form="snippetForm"/> </for

好的,在我的js中,我将输入值设置为js值

$('input[name="mode"]').val(editor.session.getMode().$id);
这在我的新视图形式中很好地工作

<form id="snippetForm" action="/snippets/new" method="POST">
    <input class="hidden" type="text" name="mode" form="snippetForm"/>
</form>
但是当我对我的更新表单做同样的操作时

<form id="snippetForm" action="/snippets/<%= @snippet.id %>/edit" method="POST">
    <input class="hidden" type="text" name="mode" form="snippetForm"/>

    <input id="hidden" type="hidden" name="_method" value="patch">
</form>
解决了问题

我正在设置会话更改的值

editor.getSession().on("change", function () {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});
问题是我做出了一个危险的假设,即更改模式被视为会话中的更改事件。经过一些测试后,我注意到它工作了,但只有在提交之前我在编辑器中键入时才起作用。我改成

$(document).click(function() {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});

所有的工作都在同一页上吗?尝试命名一个模式1,看看是否可以修复它。不,当它呈现另一个模式不存在时,它们在不同的视图中,我也尝试过重命名:(这是我的第一个想法,可能与jquery准备就绪与dom准备就绪有关。在设置值之前,请尝试在浏览器中设置断点,并查看$('input[name=“mode”]”返回您认为应该返回的值,或者如果此时未定义该值。很抱歉,我是js的新手,不太确定如何进行更新:我做了console.log,它吐出了我想要的内容,所以很好
editor.getSession().on("change", function () {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});
$(document).click(function() {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});