Как отправить выбранную опцию в контроллер

Я создал следующий выпадающий список, а также условную проверку, которая выведет "блок" -> детали, связанные с опциями. Смотрите ниже, например:

function val(ddbox) {

         //NEW
        if ( ddbox.options[ddbox.selectedIndex].value == "Others"){
                document.getElementById("extradiv").style.display = "block";
        }else{
                document.getElementById("extradiv").style.display = "none";
        }
         if( ddbox.options[ddbox.selectedIndex].value != "Others"){
                document.getElementById("NumberChosen").style.display = "block";
        }else{
                document.getElementById("NumberChosen").style.display = "none";
        }
}
 <li class="bigfield">
                        <select name ="ddbox" id="ddbox" onchange = "val(this)">
                        <option value ="0"> Select Number..</option>
                        <option value ="Option 1"> 1</option>
                        <option value ="Option 2"> 2</option>
                        <option value ="Option 3"> 3</option>
                        <option value = "Others"> Others</option>
                        </select>
                </li>


                <!--when user select "Others"-->
                <div id = "extradiv" style ="display:none">
                <li class="bigfield"><input placeholder="Enter your Num" type="text" name="OthersNum" id="OthersNum"/></li>
                <li class="bigfield"><input placeholder="Number Characteristics" type="text" name="NumberOthersCharacteristics" id="NumberOthersCharacteristics"/></li>
                <li class="bigfield"><input placeholder="why do you like this number" type="text" name="NumberOthersLikefactor" id="NumberOthersLikefactor"/></li>
                 </div>

                 <!--when user select other options-->
                <div  id = "NumberChosen" style ="display:none" >
               <li class="bigfield"><input value="NumChosen" type="text" name="NumChosen" id="NumChosen" readonly></li>
                <li class="bigfield"><input value="Num Chosen Characteristic" type="text" name="NumChosenCharactersitics" id="NumChosenCharactersitics" readonly/></li>
                <li class="bigfield"><input value="Num Chosen Likes" type="text" name="NumChoseLikes" id="NumChoseLikes" readonly/></li>
                 </div>

Я сделал каждый выбранный вариант для ссылки на детали в, и когда пользователь нажимает "Другие", он будет ссылаться на поле ввода в. Следовательно, форма поля сделана в Представлении структуры MVC.

Чтобы убедиться, что при отправке и значениях POST правильно к коду контроллера, я сделал следующий журнал ошибок в коде контроллера, чтобы проверить значения, полученные из формы. Следующие error_logs как показано:

       error_log(date("Y-m-d H:i:s")."_ipad,Num: ".$_POST['OthersNum']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumChar: ".$_POST['NumberOthersCharacteristics']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumLikes: ".$_POST['NumberOthersLikefactor']."\n",3,"/var/tmp/*/*.log");

       error_log(date("Y-m-d H:i:s")."_-ipad,NumberChosen: ".$_POST['NumChosen']."\n",3,"/var/tmp/*/*.log");
       error_log(date("Y-m-d H:i:s")."_-ipad, NumChosenChar: ".$_POST['NumChosenCharacteristics']."\n",3,"/var/tmp/*/*.log");           error_log(date("Y-m-d H:i:s")."_-ipad, NumChosenLikes: ".$_POST['NumChoseLikes']."\n",3,"/var/tmp/*/*.log");

Теперь это основная проблема, с которой я сталкиваюсь, оба журнала ошибок будут всегда отображаться, когда я запускаю следующую терминальную команду: "tail -f *.log", например, если я выбрал "Others" в опции перечислите и введите соответствующие поля и отправьте форму, значения будут отправлены POST в код контроллера, а в журнале ошибок будут показаны не только значения для "OthersNum", но и сведения о NumChosen. Это не тот результат, которого я хочу, я просматриваю журнал ошибок только для публикации сведений, которые были введены для параметра "Другие", и не отображаю сведения, связанные с другими параметрами.

Следовательно, избыточный error_log показан, насколько я понимаю, все значения из формы отправляются в контроллер POST. Следовательно, как я могу отредактировать существующий код так, чтобы только выбранная выбранная опция была POST -обработана на контроллере?

1 ответ

Я думаю, что ваша проблема связана с оператором if, вы не хотите использовать несколько операторов if для одинаковых условий, ваш оператор if должен быть,

function val(ddbox) {
        if ( ddbox.options[ddbox.selectedIndex].value == "Others"){
                document.getElementById("extradiv").style.display = "block";
               document.getElementById("NumberChosen").style.display = "none";
        }else{
                document.getElementById("extradiv").style.display = "none";
                document.getElementById("NumberChosen").style.display = "block";
        }
}

Используйте одно выражение if для аналогичных условий, надеюсь, это сработает...

Другие вопросы по тегам