На этот раз у меня есть список объектов Product с атрибутами name, список Category и количество.

В моем теге JSP у меня есть следующий выбор:

<select name="quantity" onchange="this.form.submit()">

Этот выбор используется для изменения количества продукта и отправки нового значения на сервер. Но у меня есть один случай, когда мне нужно отключить выбор

<select name="quantity" onchange="this.form.submit()" disabled="true">

Как включить или отключить выбор в зависимости от значения строки категории?

0
Martin Larizzate 31 Авг 2017 в 21:02

3 ответа

Лучший ответ

Если вы используете Jquery, вы можете сделать это, чтобы отключить выбор. Я добавил идентификатор, чтобы было проще.

Добавить атрибут id:

<select name="quantity" id="quantity" onchange="this.form.submit()">

Отключить через jquery:

$('#quantity').prop('disabled', 'disabled');

Вы также можете отключить его через JSTL, если вы используете это. В предыдущем ответе упоминается, когда, в противном случае, теги, но что-то подобное можно сделать с помощью простого тега if .

Если заданная сервлетом переменная запроса количества пуста

<c:if test="${empty quantityVar}">
<select name="quantity" onchange="this.form.submit()" disabled="true">
</c:if>

Если переменная запроса количества, заданная сервлетом, не пуста

<c:if test="${not empty quantityVar}">
<select name="quantity" onchange="this.form.submit()">
</c:if>
1
Jonathan Laliberte 31 Авг 2017 в 19:55

Вы можете использовать основной тег JSTL <c:choose>.

<c: choose> работает как инструкция переключения Java в том смысле, что позволяет выбирать между несколькими альтернативами. Там, где оператор switch имеет операторы case, тег <c:choose> имеет теги <c:when>. Так же, как оператор switch имеет предложение по умолчанию для указания действия по умолчанию, <c:choose> имеет <c:otherwise> в качестве предложения по умолчанию.

Примере:

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
   <head>
      <title><c:choose> Tag Example</title>
   </head>
   <body>
      <c:set var = "salary" scope = "session" value = "${2000*2}"/>
      <p>Your salary is : <c:out value = "${salary}"/></p>
      <c:choose>

         <c:when test = "${salary <= 0}">
            Salary is very low to survive.
         </c:when>

         <c:when test = "${salary > 1000}">
            Salary is very good.
         </c:when>

         <c:otherwise>
            No comment sir...
         </c:otherwise>
      </c:choose>

   </body>
</html>
1
Akshay Pethani 31 Авг 2017 в 18:24

Вы можете просто написать функцию в JS, которая отключает второй выбор в зависимости от того, каков ваш первый результат выбора.

Лучше всего начать с некоторых основ по следующей ссылке:

https://www.w3schools.com/js/tryit.asp?filename=try_dom_select_disabled

0
kingtreelo 31 Авг 2017 в 18:25