2016-04-07 11 views
0

Трудно было найти условия для хорошего поиска (поэтому, пожалуйста, извините меня, если тема уже обсуждалась), а также явное название этого сообщения.Как динамически изменять выбранную опцию и обновлять ее без перезагрузки?

Я работаем над этой внешней веб-страницей: 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.

PS: Простите мой английский

NB: Результат страницы:

result page

+0

Javascript не может быть инициализирован до загрузки страниц. Javascript - это только язык на стороне клиента. –

ответ

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

+0

Ну, мой скрипт может выбрать нужный вариант, а затем обновить результаты, отправив форму. Я бы хотел показать результат, связанный с значением параметра «0» («Toutes les notices») при первой загрузке этой страницы! – BigIndian66

+0

Перед отправкой? И где бы вы хотели отобразить этот текст? – Pimmol

+0

Я добавил изображение списка результатов, я могу дать вам часть кода, но он грязный (большая таблица) – BigIndian66