【问题标题】:One JavaScript function runs, but two don't?一个 JavaScript 函数运行,但两个不运行?
【发布时间】:2011-12-14 06:59:07
【问题描述】:

我有一个大型 Rub​​y 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 %>

在这种情况下,当我单击“运行 Function1”或“应用”按钮(按钮突出显示但不执行任何操作)时,不会调用任何函数。但是如果我把每个函数放在一个单独的

<script>
</script>

因此有 2 个脚本 /script 部分每个都包含一个函数,然后函数 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;
        }
    }
}

【问题讨论】:

  • 我看到的第一件事是你有一个分号;在你的函数调用之后。尝试删除它们。
  • 也许给我们你的 JavaScript 代码,它可能真的很有用。
  • 分号有效(偶数句柄中可以有多个语句)
  • 我重新编辑了我的帖子并添加了其中一个功能;另一个很大
  • 原来我的问题是第二个函数包含语法错误,但是当我加载表单或单击按钮时,我没有收到任何警告。此外,如果我在同一个脚本/脚本部分中有多个 js 函数,每个函数都由一个单独的按钮调用并且一切正常,但是如果我故意在其中一个函数中引入语法错误,那么所有这些函数都变得无用,没有任何错误或警告信息!这太可怕了,我不敢相信这是真的,我测试了很多次来证明这一点!

标签: javascript function button submit


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我改为 onClick 和 onSubmit 但仍然是同样的问题 ;-(
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多