一个JavaScript函数运行,但两个不运行?

时间:2011-12-14 06:59:08

标签: javascript function button submit

我有一个大型的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;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

输入类型提交将提交表单。你需要改变它:

<div class="actions">
 <input type="button" value="Apply" onclick="applyConfigs();">
</div>

答案 1 :(得分:0)

正确的名称是使用大写C的onClick,但这无关紧要。假设您的javascript没有错误...请尝试使用onSubmit事件作为应用按钮。我想这就是你想要的。 onSubmit甚至允许您有条件地取消表单提交。