【问题标题】:Onclick/onchange cancelling eachotherOnclick/onchange 互相取消
【发布时间】:2012-12-01 22:34:30
【问题描述】:

所以我有一个表单,它的一个字段调用一个 JavaScript 函数来对其他一些字段内容进行一些更改。

像这样:

<form>
   <select onchange="montarconselho(distrito,'concelho');" id="distrito">

    other selects here...

   <input onclick="return submitform()" type="submit"id="inserir"/>
<form

现在我遇到的问题是,如果我离开该 onclick 函数调用,则 select 上的 onchange 函数将停止工作。

如果我从按钮中删除 onclick 调用,则选择上的 onchange 开始工作!

他们每个人的功能彼此无关,所以我不知道发生了什么。

感谢回复的人!

【问题讨论】:

  • 选择元素通常不会自动关闭。你应该有一些选择。另外,最后一个标签实际上是&lt;/form&gt;,对吧?
  • 为什么不在表单中添加 onsubmit 处理程序?

标签: javascript forms function onclick onchange


【解决方案1】:

我对同样的问题有轻微的变化。 我的 onchange 是在文本输入上。我更改了输入值,但将焦点留在了该输入中。然后我用鼠标点击一个按钮(或点击一个访问键),它应该会触发一个 onclick。

在我的情况下,onchange 运行,但 onclick 在调用处理程序之前永远不会触发或停止。

onchange 启动一个简短的 ajax 进程。

如果我在单击按钮之前退出输入,则两个事件都可以正常工作。 就好像浏览器取消注册 onclick 事件监听器,直到 onchange 完成。

......

啊哈!写这篇文章让我发现了这个狡猾的陷阱。我的 onchange 处理程序首先在运行时禁用所有表单输入。呵呵。

这成为您问题的答案的可能性似乎很小,但它表明您有时必须查看代码以找出错误是多么困难。你可以试着整理一下你的代码:';'在 submitform() 之后,id= 之前的空格,连续两个打开的表单标签?

【讨论】:

    【解决方案2】:

    验证你的代码是这样写的:

    HTML:

    <form action="/echo/json/">
      <select onchange="montarconselho(distrito,'concelho');" id="distrito">
       <option value"0">0</option>
       <option value"1">1</option>
       <option value"2">2</option>
      </select>    
    
    
    
     <input onclick="return submitform()" type="submit" id="inserir"/>
    </form>​
    

    JS:

    var montarconselho​ = function (a,b) {
        alert ('select change');
    }
    

    如果这不起作用,请尝试发布您的“真实”代码的 sn-p

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多