当JS

时间:2017-09-23 15:01:46

标签: javascript drop-down-menu onchange

我制作了一个脚本,从下拉菜单中选择一个选项。 scrips正在运行,但是下拉菜单也有一个onchange监听器,当用JS选择下拉选项时,这个监听器不会触发?

示例:

如果我从下拉列表中手动选择T405,onchange脚本将会触发。 如果我从我的脚本中选择T405,下拉列表会显示所选的选项,但onchange脚本不会触发?

我的简单html代码(以后它会成为img):

<ul>
  <li onclick="selectItemByValue('bundle-option-132', 700)">Test</li>
</ul>

我的JS(正在工作并从下拉列表中选择一个选项):

<script>
   function selectItemByValue(dropValg, value) {
      var denne = document.getElementById(dropValg);
      denne.value = value;
   }
</script> 

有没有办法更新/刷新&#34;下拉列表,以便在我的脚本选择选项时触发onchange脚本?

我甚至尝试从我自己的脚本中解雇onchange脚本?

<script>
   function selectItemByValue(dropValg, value) {
      var denne = document.getElementById(dropValg);
      denne.value = value;

      bundle.changeSelection(denne);
   }
</script> 

-----------------编辑----------------

现在,将denne.onchange()添加到我的脚本并将其作为&#34;代码段&#34;运行时,它现在可以正常工作,但它不适用于我的&#34;直播网站&#34;?

似乎有一个事件监听器覆盖了内联onchange电话?一个名为prototype.js的脚本?如果我删除onchange元素的<select>部分,则此脚本只会运行它/添加它。

我在我的Magento商店中使用了一个名为OptionBundle的脚本,当使用JS更改下拉选项时,这个脚本没有被触发? 如果我删除prototype.js我的脚本工作得很好,但它粗略地破坏了OptionBundle脚本的功能。

我要尝试写剧本的作者。

工作示例(添加了denne.onchange()):

&#13;
&#13;
function selectItemByValue(dropValg, value) {
  var denne = document.getElementById(dropValg);
  denne.value = value;
  denne.onchange();
  console.log(denne.value);
  console.log(denne);
}
&#13;
<ul>
  <li onclick="selectItemByValue('bundle-option-132', 700)"> Click to change</li>
</ul>

<select onchange="alert('Content changed')" id="bundle-option-132" name="bundle_option[132]" class="bundle-option-132 bundle-option-select change-container-classname" wtx-context="276DE744-A364-4DD3-AEFC-0D9F9A9AAE19">
  <option value="">Udvælg...</option>
     <option value="875">Bianco</option>
     <option value="695">T400</option>
     <option value="697">T402</option>
     <option value="698">T403</option>
     <option value="699">T404</option>
     <option value="700">T405</option>
     <option value="702">T407</option>
     <option value="703">T408</option>
     <option value="704">T409</option>
     <option value="705">T410</option>
</select>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

只需触发onchange

&#13;
&#13;
function selectItemByValue(dropValg, value) {
  var denne = document.getElementById(dropValg);
  denne.value = value;
  denne.onchange();
}
window.onload = function() {
  document.getElementById("sel").onchange = function() {
    console.log(this.value);
  }
  document.getElementById("but").onclick = function() {
    selectItemByValue("sel", 1);
  }
}
&#13;
<select id="sel">
  <option value="">Please select</option>
  <option value="1">One</option>
  <option value="2">Two</option>
</select> <button id="but" value="1">
Click to change to "1"</button>
&#13;
&#13;
&#13;