带有 Spring 形式的 JSP 上的 JavaScript:选择

Dio*_*ooi 2 javascript jsp

我有一个jsp:

<form:select path="operation" onchange="myFunc(${oper.id})">
  <c:forEach items="${operList}" var="oper">
    <form:option label = "${oper.name}" value="${oper.id}|${oper.name}"/>...
Run Code Online (Sandbox Code Playgroud)

我有一个 js 函数myFunc(id) { alert(id); } 然后我更改选择值我看到警报:未定义。
华错了吗?

San*_*ish 5

您无法${oper.id}<forEach>循环之外获取值,因为它是列表中的一个元素。

要从下拉onchange()事件中获取选定的值,请将该id属性添加到该字段并在 javascript 中获取它

jsp :

<form:select id="mySelect" path="operation" onchange="myFunc()">
  <c:forEach items="${operList}" var="oper">
    <form:option label = "${oper.name}" value="${oper.id}|${oper.name}"/>...
Run Code Online (Sandbox Code Playgroud)

查询:

  function myFunc() {
    var  selectedValue= $("#mySelect").val();
    alert(selectedValue);
   }
Run Code Online (Sandbox Code Playgroud)

如果你更喜欢不使用 jquery,这里是 javascript 版本,

    function myFunc() {
    var selectBox = document.getElementById("mySelect");
    var selectedValue = selectBox.options[selectBox.selectedIndex].value;
    alert(selectedValue);
   }
Run Code Online (Sandbox Code Playgroud)

或者干脆,

<form:select id="mySelect" path="operation" onchange="myFunc(value)">
      <c:forEach items="${operList}" var="oper">
        <form:option label = "${oper.name}" value="${oper.id}|${oper.name}"/>...
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中,

function myFunc($val) {
        alert($val);
       }
Run Code Online (Sandbox Code Playgroud)

value以函数调用作为参数传递属性。

希望这可以帮助!!