Member 14130808 Ответов: 1

Как изменить значение атрибута действия формы на основе выбора datalist?


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

В основном HTML выглядит следующим образом:

<form id="storetable" autocomplete="off" action="" method="post">
<label>STORE:</label>
  <input type="text" list="storeID" name="store" placeholder="Choose a store..." required>
       <datalist id="storeID">
          <option value="cwb_coins">Causeway Bay</option>
          <option value="wc_coins">Wan Chai</option>
          <option value="lck_coins">Lai Chi Kok</option>
          <option value="tp_coins">Tai Po</option>
       </datalist>
</form


Что я уже пробовал:

<script>
    $(document).ready(function(){
    $("#storeID").change(function(){
   var url =  $(this).children(":selected").text(); //get the selected option value
   switch (url) 
  {
   case "cwb_coins":
   $("#storetable").attr('action','cwb_coin_code.php');
   //changing action attribute of form to cwb_coin_code.php
   break;
   case "wc_coins":
   $("#storetable").attr('action','wc_coin_code.php');
   break;
   case "lck_coins":
   $("#storetable").attr('action','lck_coin_code.php');
   break;
   case "tp_coins":
   $("#storetable").attr('action','tp_coin_code.php');
   break;
   default:
       $("#storetable").attr('action', '#');
   }
   }); 
 }); 
</script>

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вам нужно научиться пользоваться отладчиком, вы никогда не будете исправлять проблемы, просто глядя на код. Во-первых, действительно ли ваше событие изменения срабатывает? Поместите в него точку останова или оператор "отладчик". Вы привязываетесь к изменению даже самого даталиста, что, вероятно, неверно, вам, вероятно, нужно прикрепиться к событию изменения элемента "input".

Как только это событие срабатывает снова, используйте точки останова и т. д., Чтобы изучить содержимое "url". Вы можете обнаружить, что он не содержит того текста, который вы думаете, что он содержит, вы, вероятно, хотите получить ".val ()", а не ".text()".