#javascript #thymeleaf
#javascript #thymeleaf
Вопрос:
Я потратил много часов на изучение этого и применил все решения, но не могу заставить свой код работать. У меня есть select, который содержит объект в качестве значения (не может быть изменен из-за привязки данных) при изменении, он вызывает функцию js, которая обращается к свойству id объекта, содержащемуся в атрибуте value, но возвращает undefined. Есть ли способ получить к этому доступ. Я безуспешно пробовал JSON.parse и JSON.stringify и комбинацию из двух для объекта.
вот мой выбор:
<select th:field="*{category}" class="custom-select" id="category" style="padding: 0px" onchange="getInstitutions()">
<option value="a" selected>select one..</i></option>
<option th:each="category : ${categories}"
th:value="${category}"
th:text="${category.name}"
th:data="${category.id}"
selected></option>
</select>
Вот моя функция JS:
function getInstitutions() {
var cat = $("#category").val();
//cat=JSON.stringify(cat);
var catId=cat.id;
alert(catId); // undefined
// use id to query db using ajax...
}
Комментарии:
1. можете ли вы показать
$("#category").val()
это значение2. У вас нет возможности динамически оценивать и получать поле идентификатора объекта в вашей JS-функции после рендеринга шаблона. Вы можете сделать две вещи. 1) Вы можете присвоить свое
object.id
значение значению вашего параметра с помощьюth.value="${category.id}"
, а затем получить и использовать его в вашем JS. 2) Вы можете использовать пользовательский атрибут option, как вы сделали это в своемth:data="${category.id}"
, и получить его в своем JS3. Спасибо @prasanth и Ahmet. Я использовал $ {category.id } затем я позже привязываю данные в методе сохранения контроллера