如何动态更改所选选项并更新而不重新加载?

时间:2016-04-07 12:17:17

标签: javascript html-select onload content-script

很难找到良好搜索的条款(如果主题已经讨论过,请原谅我)以及此帖子的明确标题。

我正在使用此外部网页:https://espacepersonnel.bnf.fr/views/mes_notices.jsf(需要记录) 我试图用值=“0”的那个覆盖默认选择的选项。我写的自定义js代码确实提交了表单,但只在页面加载后才提交。不过我还是想在此之前更改选择值。

以下是此页面中相关代码的部分(当然我无法编辑):

<form id="noticeComp:mainForm" name="noticeComp:mainForm" method="post" action="/views/mes_notices.jsf" class="noticeForm" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="noticeComp:mainForm" value="noticeComp:mainForm">
    <input type="hidden" name="noticeComp:mainForm:j_idt253" value="">
    <input type="hidden" name="noticeComp:mainForm:j_idt254" value="false">
    <!-- <div id="site"> -->    
    <!-- <div class="moncatagen"> -->
    <!-- <div class="col2"> -->
    <h1 class="h1small">
        <span>
            <select name="noticeComp:mainForm:j_idt256" size="1" onchange="submit()">
                <option value="0">Toutes les notices</option>
                <option value="1" selected="selected">Notices biblio.</option>
                <option value="2">Notices d'autorités</option>
            </select>               
            Notices
        </span>
    </h1>
</form>

这是我自己的'content_script':

var elm;
var evt;

elm = document.getElementsByName('noticeComp:mainForm:j_idt256')[0];
evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);

    while(!document.getElementsByName('noticeComp:mainForm:j_idt256')[0].options[0].selected){
        document.getElementsByName('noticeComp:mainForm:j_idt256')[0].options[0].selected="selected";
        elm.dispatchEvent(evt);
    }

你能看到我的解决方案吗? (如果只有JS,那就更好)

非常感谢你阅读这篇文章并在可以的情况下回答。

Bigindian。

P:请原谅我的英语

N.B: 结果页面:

result page

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

  • 获取对
  • 的引用
  • 循环其选项
  • 如果选项的值为“0”,请选择它。否则,取消选择它。

示例代码:

var elm = document.getElementsByName('noticeComp:mainForm:j_idt256')[0];
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);

for (var i = 0; i < elm.options.length; i++) {
    var option = elm.options[i];

  if (option.value === '0') {
    option.setAttribute('selected', 'selected');
  } else {
    option.removeAttribute('selected');
    }
}

elm.dispatchEvent(evt);

function submit() {
    // code
  console.log('gogo');
}

<强> demo