繁体   English   中英

创建动态JQuery以禁用下拉列表

[英]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,其中我禁用了001002选项,但是我在下面的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列表并禁用下拉列表中的001002选项?

Servlet准备选择器,然后在JSP注入选择器:

MyServlet.java

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中,添加如下表达式:

myPage.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM