我有一个大型的Ruby on Rails表单,它具有以下部分视图结构(文件_form.html.erb)
<script language="javascript" type="text/javascript">
function myFunction1() {
... some js code here
}
function applyConfigs() {
... some js code here
}
</script>
<%= form_for(@test, :html => {:name => "Test", :id => "test_form"}) do |f| %>
... some Ruby code here
<div class="actions">
<input type=button value="Run Function1" onclick="myFunction1();">
</div>
... some Ruby code here
<div class="actions">
<input type=submit value="Apply" onclick="applyConfigs();">
</div>
<% end %>
在这种情况下,单击“运行功能1”或“应用”按钮(按钮突出显示但不执行任何操作)时,不会调用任何函数。但是如果我把每个函数放在一个单独的
中<script>
</script>
因此有2个脚本/脚本部分,每个部分包含一个函数,然后函数myFunction1()
被正确执行但applyConfigs()
仍未执行(表单已提交但applyConfigs()
函数未执行) 。在任何情况下都没有错误消息,只有未执行的功能。
知道这里发生了什么吗?
我的函数applyConfigs()
非常大,但这是我调用myFunction1()
的其他函数
function showHideDiv(elementId,buttonId) {
if (document.getElementById) {
var element = document.getElementById(elementId);
var button = document.getElementById(buttonId);
if (element.style.display == 'none') {
element.style.display = 'block';
button.value = "Hide Options";
return false;
} else if (element.style.display == 'block') {
element.style.display = 'none';
button.value = "Show Options";
return false;
}
}
}
答案 0 :(得分:0)
输入类型提交将提交表单。你需要改变它:
<div class="actions">
<input type="button" value="Apply" onclick="applyConfigs();">
</div>
答案 1 :(得分:0)
正确的名称是使用大写C的onClick,但这无关紧要。假设您的javascript没有错误...请尝试使用onSubmit事件作为应用按钮。我想这就是你想要的。 onSubmit甚至允许您有条件地取消表单提交。