Почему я получаю нулевую ссылку в IE, а не в Firefox? - PullRequest
0 голосов
/ 09 ноября 2018

из-за разметки я должен был написать подпрограмму, которая проверяет, установлен ли хотя бы один флажок в определенной форме (в форме typo3, где вещи нужно проверять на 3 сайтах, которые можно переключать с помощью следующей кнопки, которая кнопка отправки - на каждом сайте должен быть проверен хотя бы один параметр). Процедура также обрабатывает diff. языки, так что это может быть переведено ...

Но почему-то IE (я пытался с IE11) выдает нулевую ссылку, когда достигается эта строка (но в Firefox это работает отлично):

if (elems[i].children[0].control['checked'] === true

вот вся рутина:

     if(document.getElementById("pollFR") != null &&  document.getElementById("pollFR") != '' ){
        document.getElementById("pollFR").addEventListener("submit", submitCheckboxHandler);
        language = "FR"
    }

//some more identical if-statements, because there is a form for every //language e.g. pollEN, etc.

    function submitCheckboxHandler(ev) {
        var elems = document.getElementsByClassName('form-check');
        var elemCounter = 0;
        var i;
        for (i = 0; i < elems.length; i++) {
            if (elems[i].children[0].control['checked'] === true)
                elemCounter++;
        };
        if (elemCounter === 0) {
            switch(language){
                case "EN":
                    alert("Please choose at least one parameter!");
                    break;
                case "FR":
                    alert("...french...");
                default:
                    alert("...german...");
            }
            ev.preventDefault();
        }
    }

Кто-нибудь знает, почему это происходит?

Спасибо!

EDIT: как было запрошено, сгенерированный HTML выглядит следующим образом (фрагмент):

<!-- language: lang-html -->

    <div id="c332">
      <form enctype="multipart/form-data" method="post" id="poll" [...] />
    </div>
    <h2>Gap-analysis</h2>

    <input autocomplete="off" aria-hidden="true" id="poll-v3Bmj4bQKnD6hScEI" [...] name="tx_form_formframework[poll][v3Bmj4bQKnD6hScEI]" />

    <fieldset id="poll-fieldset-1" class="form-group">

      <legend>text:</legend>

      <div class="row">

        <div class="col-xs-4 col-sm-4 col-md-1 col-lg-4">

          <div class="form-group">

            <label class="control-label" for="poll-multicheckbox-1">text</label>

            <div class="input checkbox">
              <div id="poll-multicheckbox-1" class="inputs-list">

                <div class="form-check">
                  <label class="form-check-label" for="poll-multicheckbox-1-0">
                                        <input type="hidden" name="tx_form_formframework[poll][multicheckbox-1]" value="" /><input id="poll-multicheckbox-1-0" type="checkbox" name="tx_form_formframework[poll][multicheckbox-1][]" value="term" />
                                        <span>term</span>
                                    </label>
                </div>
              </div>
            </div>
          </div>
[......]
            <div class="actions">

<nav class="form-navigation">
    <div class="btn-toolbar" role="toolbar">
        <div class="btn-group" role="group">
                    <span class="next">
                        <button class="btn btn-primary" type="submit" name="tx_form_formframework[poll][__currentPage]" value="1">Weiter</button>
                    </span>
        </div>
    </div>
</nav>
            </div>
        </form>


<!-- end snippet -->

каждый "опрос" станет похож на "pollEN" при переключении языка ...

1 Ответ

0 голосов
/ 12 ноября 2018

По моему мнению, вы можете добавить тот же класс для элемента управления флажка, затем, основываясь на классе, найти флажок и проверить, установлен флажок или нет. Пожалуйста, обратитесь к следующему коду:

<input id="Checkbox1" class="check_language" type="checkbox" value="Item A" /> Item A <br />
<input id="Checkbox1" class="check_language" type="checkbox" value="Item B" /> Item B <br />
<input id="Checkbox1" class="check_language" type="checkbox" value="Item C" /> Item C <br />
<button class="btn btn-primary" id="btn_submit" type="submit" name="tx_form_formframework[poll][__currentPage]" value="1">Weiter</button>
<script type="text/javascript">
    document.getElementById("btn_submit").addEventListener("click", submitCheckboxHandler);
    function submitCheckboxHandler(event) {
        var elems = document.getElementsByClassName("check_language")
        var elemCounter = 0;
        var i;
        for (i = 0; i < elems.length; i++) {
            if (elems[i].checked === true)
                elemCounter++;
        };
        if (elemCounter === 0) {
            //switch (language) {
            //    case "EN":
            //        alert("Please choose at least one parameter!");
            //        break;
            //    case "FR":
            //        alert("...french...");
            //    default:
            //        alert("...german...");
            //}
            alert("Please choose at least one parameter!");
            event.preventDefault();
        }
        else {
            alert("Already selected " + elemCounter + " item");
        }
    };
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...