繁体   English   中英

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

[英]Update onChange event and fire onChange event javascript

我有一个select元素,有几个这样的选项:

<select onChange="foo(this)">
   <option value="ok" selected>..</option>
   ....
   <option value="no">..</option>

我正在使用django(不知道这是否真的很重要..),在选择标记的onChange事件中,我应该放置window.location.href=this.value但这不是我想要的,因为我需要制作一些修改this.value ..

我的想法是创建一个传递选择项的foo函数,然后修改onChange事件并随后将其触发。

我搜索了一些帮助,发现了几个选项。1) 如何手动触发onchange事件?

2) 触发“ onchange”事件

以及其他我不记得的示例,但我在示例中用完了。 他们都没有为我工作。

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

<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>

如果我什么都没丢失,则不必手动触发onchange,因为它已经被触发了。 您只需要从foo函数中返回修改后的值即可。

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

<script>
function foo(obj)
{
    if (condition)
    {
        return obj.value;
    }
    else
    {
        return obj.value.replace('/A/', '/R/');
    }
}

然后在您的foo上调用onchange="window.location.href=foo(this)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM