簡體   English   中英

啟用Java的Javascript,禁用僅具有Java代碼,無HTML的JSP文件中的下拉菜單

[英]Javascript to enable, disable drop down menu in JSP file having Java code only, no HTML directly

讓我介紹一下設計。

JSP中的每個字段都由Map 標簽名稱,輸入類型(下拉菜單或其他),輸入值,默認值等被添加到Map ,例如Map nameAttributes 還有另一個類GeneralWriter writer ,我沒有訪問權限,該類從Map獲取值,解析它們並編寫適當的HTML代碼。

寫入地圖后, writer.writeSelectBox(nameAttributes); 叫做。

現在,要求是:
有一個下拉菜單,取決於其選定的值,某些其他下拉菜單被禁用(在UI中顯示,但不可修改)或啟用。 由於我沒有為添加的字段編寫HTML代碼,因此我無法編寫函數調用事件來完成我的工作。

我觀察到,在字段上的onMouseOut事件上調用了JS函數,如"View Source" 因此,我想我可以在此處編寫代碼來檢查字段值並影響其他下拉菜單。 但是,如果我在JS函數中編寫alert (只是檢查),它不會警報我,這意味着未調用該函數,並且我無法編寫啟用/禁用代碼。

有什么方法可以完成這項工作。 啟用和禁用應取決於用戶在下拉菜單之一中選擇的內容。

樣例代碼:

<%
Map nameAttr = new HashMap();   
nameAttr.put(GeneralConst.INPUT_MESSAGE, Const.MSG_FIELD_NAME);
//.....

writer.writeAllSelectBox(nameAttr);
%>

需要緊急幫助,謝謝。

在JSP頁面的“查看源代碼”中,很明顯,已為某些字段添加了onChange和onMouseOut事件等,並在GeneralWriterGeneralWriter這些內容寫出到輸出流中,如下所示

out.println("<td nowrap><select name=" + strName);
out.println(" style=\"width:" + strWidth + "px\"");
out.println(" onChange ="+onChange);

因此,我在這里添加了自己的方法,而不是使用現有的代碼,並介紹了onChange事件。 您看到的(正確的)“ onChange ”變量是java.lang.String類型的,這必須從JSP本身傳遞,關於我想要什么行為或為特定JSP調用哪個特定函數。

現在我在JSP中添加了以下內容

<body>
  <script>
    window.onload = setModeForPara2('MEMBERTYPE','MEMBERSTATE','CKSTATUS') ;
    function resetevent(uri){
      setModeForPara2('MEMBERTYPE','MEMBERSTATE','CKSTATUS') ;
    }
  </script>
</body>

其中參數是下拉菜單的名稱,而setModeForPara2()是要禁用/啟用的JS函數,如我在原始帖子中所述。 它檢查MEMBERTYPE是否為0,然后將禁用狀態和灰色呈現給MEMBERSTATE和CKSTATUS下拉菜單,否則啟用它們並刪除灰色。
當單擊“重置”按鈕以將禁用狀態呈現給“狀態”和“狀態”字段時, resetevent(uri)也是一個JS函數。

因此,只要有以下情況, setModeForPara2()調用setModeForPara2()函數:
1.頁面已加載,
2.第一個下拉菜單(MEMBERTYPE)的值已更改,並且
3.單擊重置按鈕。

解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM