【问题标题】:Why onchange doesn't work?为什么 onchange 不起作用?
【发布时间】:2010-09-22 21:31:00
【问题描述】:

我只是在网上寻找答案,但我没有找到任何人。我在玩google的api翻译,JS有问题。事实上我的代码是 100% 好的,除了一个操作。

我的问题是当时没有给出翻译。在 js 将信息发送给 google 后,它不会等到给出翻译。取而代之的是,它会继续阅读我的代码,因此它不会停下来寻求答案。它处理要翻译的信息,然后答案将在一段时间后得到。所以因为我想做翻译的翻译,所以我做了一个甜蜜的循环。因为我不知道如何停止 js,所以我已经完成了一个带有不同输入文本框的页面,并且在我的循环中,当接收到数据时,它会发送到文本框的值,这就是问题所在。我想在文本更改时再次输入我的 js 函数,所以如果 js 更改了值,它将在我获得翻译时返回到我的循环。简单有效但是如果我在输入框中输入:

onchange="myfunction()"

循环不起作用。但最奇怪的是,如果我手动更改文本,那么该函数就会起作用,所以就好像 onchange 仅在人类更改文本时才有效,但在 js 更改文本时无效。有什么解决办法吗?可能是一些活跃的听众或类似的东西?

【问题讨论】:

  • 你说的这个圆头是什么?
  • 可能值得研究一个框架,例如 jquery,并在 dom 加载后使用 $(document) 来处理 js
  • @Matti 他说这很“甜”,所以也许他的意思是“扣”,这是一种带有水果的烤盘,有点像“鞋匠”。当我做很多翻译的时候,我最喜欢吃的就是吃一些美味的蓝莓扣。
  • 我说“这很甜蜜”,说这是我想要的正确。不是这个bucle的问题,问题是我通过js改变了一个文本框的值,我想在文本框得到新值的时候调用我的函数
  • 翻译API是否没有提供回调函数参数,您可以提供一个函数在翻译完成时调用?

标签: javascript html


【解决方案1】:

onchange 事件仅在用户更改输入值时触发。如果以编程方式更改输入,则不应触发。

从设置值的任何函数调用该函数。

【讨论】:

  • 我不能。我不知道什么时候能得到答案,如果我在 bucle 内调用函数,它会在得到第一个答案之前调用 google 的 API
  • 如果不等到结果回来怎么设置输入的值?
  • google.language.translate(text, "en", "fr", function(result) { document.getElementById('translation').value = result.translation; });
  • Js 做了这一行,然后在没有答案的情况下继续下一行。然后稍后当神奇地给出答案时,这条线设置值有效。
  • 嗯,是的。这是一个回调,是事件驱动编程中的一种常见模式(大多数 JS 都是)。您将函数作为参数传递。当数据返回时调用该函数。 做那个功能的工作
【解决方案2】:

onchange 事件旨在在用户(并且只有用户)更改值时触发,因此仅在值更改后触发它AND 字段失去焦点。

【讨论】:

  • 有没有人只在改变值而不失去焦点后才被解雇?
  • 我不知道。也许您可以专注于文本输入的 onchanged 事件以外的其他内容。更改文本输入的功能是否还有其他作用?例如,它可能会调用提交表单 - 如果是这样,您可以监听表单元素的 onsubmit 事件。
  • 问题是,如果我编写一些代码来更改更多内容,它将在文本写入文本框之前完成。听起来很荒谬,但是......
【解决方案3】:

有用的初学者和你所说的 Bucle


  1. 您应该查看onkeyuponblur
  2. 如果输入值是由JavaScript设置的,那么为什么不设置后调用事件呢?

我不知道扣环是什么。
我的最佳猜测:“循环”是西班牙语

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多