Комбобокс в JS форме.



  • Здравствуйте.

    Возникла проблема следующего характера.

    Комбобокс в форме работает, но не понятно как. Функция "Установить значение Комбобокса" отрабатывает не корректно. А именно:

    • стоит задача автоматизировать добавления языков. Для этого из всплывающей формы необходимо выбрать один из языков 0_1520415711326_upload-8a34f631-2669-4914-90ab-a9f32f4c90d3

    • если делать все в ручном режиме, то необходимо кликнуть по полю и выбрать один из языков 0_1520415789338_upload-746a8c38-b24f-4e1e-8214-d746be6bf78d

    И вот тут возникает непонятка. "Установить значение Комбобокса" используемое мной и ранее, работавшее как положено, выдает не верный результат. В качестве теста значение я указываю "Венгерский" (без кавычек разумеется). Отрабатывает блок, а в результате устанавливается значение на "Корейский".

    Может быть возможно каким-то образом выбрать элемент напрямую из кода страницы? 0_1520416037390_upload-81d533f6-b0bf-44eb-aea6-d7ea15e7a5e1

    Функция "Установить индекс Комбобокса" работает корректно, но ее использование в форме не будет рациональным, так как при выборе значения из формы это значение в дальнейшем скрывается от пользователя, а значит и привязать каждое значение комбобокса к своему id не получится.

    Может будут какие-то соображения как решить данную проблему? Буду Вам очень признателен за ответы по сути.



  • а что выберет если значение итальянский безковычек?



  • This post is deleted!


  • @ruzne Если выбрать "Итальянский" в Комбобоксе устанавливается значение "Финский".



  • @Artifexter если нет ошибки и выбор идет по значению а не по индексу, даже в этом случае, если при итальянском всегда финский, а эстонский - турецкий, учитывая что языков не так много можно для каждого венгерского найти свой румынский, перемапить и пользоватся. т.е. если нужен финский выбирать итальянский и т.д.

    а у меня в комбобоксах выбрать случайное значение не работало



  • @ruzne Случайное значение выбирает, с этим так же нет проблем. Но Вообще Вы правы, методом народного тыка подобрать соответствия и дело в шляпе :) Но очень интересует причина таких вот результатов.



  • @ruzne Идея с соответствие провальна. Первая итерация, добавление первого языка, причем любого - происходит как положена. Сказал выбрать "Польский" его и выбрало, попробовал "Корейский" - выбрало "Корейский". Все чудесно, работает. Добавил язык.
    Вторая итерация все ломается. Например, порядковый номер языка "Иврит" - 8. Если при первом прогоне выбрать его, при втором прогоне указать "Испанский" под порядковым номером 9 - все ломается и выбирает что угодно, но не "Испанский". Но если указать "Греческий" 7, то все работает как надо. И с любым языком чей порядковый номер выше первого, то есть "Иврит".
    В общем проблема в том, что выбранный уже ранее язык скрывается из списка, а далее корректная работа прекращается. Может есть какой-то способ учитывать скрытые элементы при работе блока программы?


  • administrators

    @Artifexter Странное поведение комбобокса, скиньте ссылку. Установить комбобокс по значению перебирает все варианты по очереди, и при соответствии текста - выбирает.

    Я бы всё таки посмотрел какой запрос уходит после отправки поста и работал бы на запросах, в разы быстрее, и порою даже проще.

    Нажмите захват запросов
    0_1520433085728_на форум33.png
    а потом отправите форму.



  • @Artifexter
    если работает выбрать случайное значение, то
    выбрать случайное значение, получить текст, если выбрано не то что нужно повторять пока переботом не будет венгерский)))

    ну по крайней это сто рабочий вариант


  • administrators

    @ruzne Случайное значение может повторятся, нужный вариант в итоге будет очень долго выбираться. Да! Очень важный момент, значение комбобокса чувствительны к регистру. Попробуйте из кода элемента взять текст и использовать именно его.



  • @Artifexter правмльно лм я понимаю, что на момент второго выбора в комбобоксе выбран предыдущий елемент, тоесть стоит дефолтным?
    Если так, то просто установите индекс комбобокса в 0, потом выбирайте нужный



  • А что если выбрать язык а потом с помощью >MACTH> кликнуть на нужный язык



  • Благодарю всех за идеи, но...
    Перебор не помогает, так как блок "Получить Текст" выполняемый на строке комбобокса выдает строку:
    "Выберите языкАнглийскийАрабскийБолгарскийВенгерскийВьетнамскийГолландскийГреческийИвритИспанскийИтальянскийКитайскийКорейскийНемецкийНорвежскийПерсидский (фарси)ПольскийПортугальскийРумынскийТурецкийУкраинскийФинскийФранцузскийЧешскийШведскийЯпонский"
    Какой бы из языков не был выбран, я получаю строку с перечислением всех языков, и как Вы понимаете, нет возможности как-то сравнить или сопоставить выбор.
    Момент, что чувствителен к регистру - учел. Да и если с этим что не так, то выбирается по умолчанию самый крайний язык.
    Через >MACTH> не помогло.
    А вот с захватом HTTP запросов разбираюсь...

    Возник такой вопрос, можно ли автоматизировать изменение кода страницы по ходу выполнения скрипта? Поясню. Если убрать стили элементов скрывающие уже выбранные языки при отработке блока установки комбобокса по значению - все работает отлично. Речь идет о -
    0_1520844547715_upload-ce5bf868-8328-4dd7-b242-351a1ad27057
    Конечно в ручном режиме я могу зайти и убрать не нужные стили, но вот как сделать, что бы сам скрипт убирал лишнее до выбора языка?



  • @Artifexter можно есть вариант удалить с помощью js и есть функция в bas установить значение атрибута и указать пустое значение атрибута style



  • @Artifexter

    elems = document.querySelectorAll('option[style="display: none;"]');
    for (var i = 0; i < elems.length; i++){
    elems[i].style.display = "";
    }
    


  • @ruzne Огромное Спасибо Вам за код. Все заработало отлично, продолжаю колупать свой скрипт. И большое спасибо всем, кто помогал советами.