[英]Create a dynamic JQuery to disable a dropdown
我正在使用Servlet和JSP。 我有一个JSP表单,其中有一个下拉列表,该列表是动态生成的,因此到目前为止,下拉列表中有三个选项。
HTML代码 -
<form id='form' method='post' action='/test/'>
<select id="type" name="typeOne">
<optgroup id="first" name="First" label="FirstDiv">
<option value="value1" id="001">valuee1 count</option>
<option value="value2" id="002">value2</option>
<option value="value3" id="003">value3
</option>
</optgroup>
</select>
</form>
现在,我需要使用jquery禁用上面的下拉列表中的几个选项。 下面是我的jQuery,其中我禁用了001
和002
选项,但是我在下面的jQuery中对ID进行了硬编码-
<script>
$(document).ready(function () {
$(function () {
$("#type option[id='001']").prop("disabled", true);
$("#type option[id='002']").prop("disabled", true);
});
});
</script>
下面是我的servlet,我从中传递一个列表,该列表将包含我要在下拉列表中禁用的所有ID。
List<String> storeTest = new ArrayList<String>();
storeTest.add("001");
storeTest.add("002");
req.setAttribute("store", storeTest);
问题陈述:-
现在我的问题是-如何在jquery中迭代store
列表并禁用下拉列表中的001
和002
选项?
在Servlet
准备选择器,然后在JSP
注入选择器:
List<String> storeTest = new ArrayList<String>();
storeTest.add("001");
storeTest.add("002");
// If you have Java8 : use Lamda list.stream().map(e->'#'+e)
req.setAttribute("store",StringUtils.join(mapForId(storeTest).toArray(),","));
this.getServletContext().getRequestDispatcher( "/myPage.jsp" ).forward( req, response );
然后在您的jsp中,添加如下表达式:
<script type="text/javascript">
//....
jQuery(document).ready(function () {
jQuery(function () {
jQuery(<%=request.getAttribute("store") %>).prop("disabled", true);
});
});
</script>
已知mapForId是Servlet中的另一种方法:
List<String> mapForId(List l){
List<String> newArr=new ArrayList<String>();
for(String attr : l){
newArr.add("option#"+attr);
}
return newArr;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.