我有一个select元素,有几个这样的选项:
<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?
以及其他我不记得的示例,但我在示例中用完了。 他们都没有为我工作。
这是我到目前为止在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>
答案 0 :(得分:1)
如果我什么都没丢失,则不必手动触发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)"