首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新onChange事件并触发onChange事件javascript

更新onChange事件并触发onChange事件javascript
EN

Stack Overflow用户
提问于 2019-08-28 23:15:33
回答 1查看 683关注 0票数 0

我有一个select元素,具有如下几个选项:

代码语言:javascript
复制
<select onChange="foo(this)">
   <option value="ok" selected>..</option>
   ....
   <option value="no">..</option>

我和django一起工作(不知道这是否真的重要。)在select标记的onChange事件中,我应该放置window.location.href=this.value,但这不是我想要的,因为我需要对this.value做一些更改。

我的想法是创建一个foo函数,传递选择项,然后修改onChange事件,然后启动它。

我寻找了一些帮助,我找到了几个选择。1) How can I trigger an onchange event manually?

2) Trigger "onchange" event

还有其他我不记得的例子,但是我在这个例子中用了下来。他们都不是为我工作的。

这就是我到目前为止在foo函数中尝试过的:

代码语言:javascript
复制
<script>
    function foo(obj)
    {
        if (condition)
        {
            obj.onChange = "window.location.href="+ obj.value;
            //obj.onChange(); //1 option I found on the net was to call onChange this way 
        }
        else
        {
            obj.onChange = "window.location.href="+ obj.value.replace('/A/', '/R/'); // this is the update I need to apply based on the condition

            //obj.fireEvent("onChange"); // another solution

            // another solution
            if ("createEvent" in document) {
                var evt = document.createEvent("HTMLEvents");
                evt.initEvent("change", false, true);
                obj.dispatchEvent(evt);
            }
            else {
                obj.fireEvent("onchange");
            }
        }
    }
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-28 23:39:26

如果我没有遗漏任何东西,您就不必手动触发更改,因为它已经触发了。您只需从foo函数返回修改后的值即可。

因此,不要使用obj.onChange =,而是尝试return并删除整个createEvent代码。

代码语言:javascript
复制
<script>
function foo(obj)
{
    if (condition)
    {
        return obj.value;
    }
    else
    {
        return obj.value.replace('/A/', '/R/');
    }
}

在你的foo电话里,onchange="window.location.href=foo(this)"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57701090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档