【问题标题】:Dynamic JQuery query generation to "disable" a drop down "option" in JSP动态 JQuery 查询生成以“禁用”JSP 中的下拉“选项”
【发布时间】:2014-06-10 18:24:16
【问题描述】:

我正在使用 Servlet 和 JSP。我有一个 JSP 表单,其中有一个与 id's 关联的下拉列表,到目前为止,我在下拉列表中有三个选项。

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,我在其中禁用了 option 以及从我的 servlet 获得的 id's 列表。

Store 是我从 servlet 传递的值,是 List-

JQuery 代码--

 <script>
   $(document).ready(function () {
        $(function () {
              alert(<%=request.getAttribute("store") %>);
              $(<%=request.getAttribute("store") %>).prop("disabled", true);

            });
        });
 </script>

alert 将值返回为 null

下面是我的 servlet,我从中传递了一个列表,该列表将包含我想要在下拉列表中禁用的所有 id。

Servlet 代码--

List<String> storeTest = new ArrayList<String>();
storeTest.add("001");
storeTest.add("002");
req.setAttribute("store",StringUtils.join(mapForId(storeTest).toArray(),",")); 
this.getServletContext().getRequestDispatcher( "/myPage.jsp" ).forward( req, response );

问题陈述:-

现在我的问题是 - 在我的 JSP 页面中,下拉菜单中的选项在通过后不会被禁用。谁能纠正我我做错了什么。

更新-

mapForId() 方法-

List<String> mapForId(List<String> l){
  List<String> newArr=new ArrayList<String>();
  for(Object attr : l){
      newArr.add("option#" + attr);
  }
  return newArr;
}

【问题讨论】:

    标签: java javascript jquery jsp servlets


    【解决方案1】:

    &lt;%= var %&gt; 在服务器上运行 JSP 时写入变量的内容。因此,如果您以这种方式将值打印到 Javascript 中,除非变量是数字,否则您需要引号:

    alert('<%=request.getAttribute("store") %>');
    $('<%=request.getAttribute("store") %>').prop("disabled", true);
    

    否则,说request.getAttribute("store") 的值为“这是一个句子”。 alert(&lt;%=request.getAttribute("store") %&gt;); 生成的 Javascript 是:

    alert(Here is a sentence.);
    

    您可以通过在浏览器中查看源代码并查看缺少引号来轻松修复此错误。 request.getAttribute("store") 也可能为空,这就引出了一个问题,您是在 servlet 中调用 request.setAttribute("store", something) 然后转发到 JSP 吗?如果不是,这就是它为空的原因。

    【讨论】:

    • 感谢 developerwjk 的回复。我已将其更改为引号,它仍然提醒null,是的,我在servlet 中调用req.setAttribute("store",StringUtils.join(mapForId(storeTest).toArray(),","));,然后将其转发到JSP?
    • 可能 mapForId(storeTest).toArray() 为空。
    • 所有我能想到的是,我正在创建的列表是一个字符串数组,如果一旦传递给 JSP,就需要对其进行迭代,以形成要禁用的 JQuery 选择器查询。但在此之前,我传递的值实际上应该作为对象传递吗?有什么问题是我发布的,你认为我错过了?
    • 我已经用mapForId() 方法更新了我的问题
    【解决方案2】:

    我已经解决了错误:)
    所以mapForId() 方法在attr 前面加上了option# 和id,所以我做了一个更改,它开始正常工作了。

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多