【问题标题】:Change value of <input type> when <select> change value MySql当 <select> 改变 MySql 的值时改变 <input type> 的值
【发布时间】:2015-10-08 18:22:25
【问题描述】:

我需要你的帮助来回答一个简单的问题:

我有一个表单,我需要当用户在 a 中选择另一个值时,它会更改表单的所有值。 我的代码如下:

<form action="updatecost.jsp" method="post" onsubmit=" return check(this)">

<tr>
    <td><i> choice cost</i></td>
    <td align="left"><select name="oldcost">

        <%
            Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","user","pass");
                Statement statement = conn.createStatement();
                ResultSet rs = statement.executeQuery("select * FROM cost");
        String id = "";
        String year="";
        String time="";
        String cf="";
        while (rs.next()) {
            id = rs.getString("IdCost");
            year=rs.getString("year");
            time=rs.getString("time");
            cf=rs.getString("CF");
        %>

        <option value="<%=id%>"><%=year%></option>


        <%
            }
        %>
    </select></td>
    <br>
    <td><i><font color="#660033"> actual year</font></i></td>
    <br>
    <input type="text" name="year" value="<%=year%>" size="25" /></td>
    <br>
    <td><i><font color="#660033">actual cost </font></i></td>
    <br>
    <input type="text" name="cost" value="<%=cost%>" size="25" /></td>
    <br>
    <td><i><font color="#660033"> cf </font></i></td>
    <br>
    <input type="text" name="cf" value="<%=cf%>" size="25" /></td>
    <br>
    <br>

【问题讨论】:

  • 看起来当你在遍历结果集时会覆盖值 id/year/time/cf。我猜想只有最后一条记录的值会显示在页面上。如果您将记录存储到四个数组中,它可能会更好。最后,当有人从下拉列表中选择一年时,您可以通过查找存储在 id 数组中的一条记录的值来替换显示的值,例如 id[index]。
  • 您希望 Ajax 命中一个 servlet 并吐出选项……而且最好将数据库代码放入 servlet(或者至少是您刚刚从 jsp 调用的类)中,而不是意大利面条式在jsps中。

标签: html mysql jsp select onchange


【解决方案1】:

最好将所有结果保存到ArrayList&lt;Cost&gt; costs,然后执行以下操作:

Javascript:

        var ids = new Array(),
            years = new Array(),
            times = new Array(),
            cfs = new Array();

        <%
            for(Cost c: costs) {
        %>
            ids.push("<%=c.getIdCost()%>");
            years.push("<%=u.getYear()%>");
            times.push("<%=u.getTime()%>");
            cfs.push("<%=u.getCF()%>");
        <%
            }
        %>

然后在select中插入一个onchange="setCost(&lt;%=id%&gt;);"函数并添加JavaScript函数

function setCost(id) {
    for(var i = 0; i < ids.length; i++) {
        if(ids[i] == id) {
            document.getElementsByName("years")[0].value = years[i];
            document.getElementsByName("cost")[0].value = costs[i];
            document.getElementsByName("cf")[0].value = cfs[i];
        }
    }
}

【讨论】:

  • 我可以在我的 .jsp 文件中插入所有代码吗,那是我有表单的地方?有一个与 .jsp 文件通信的 .js 文件吗? @nubteens
  • 是的,在&lt;script&gt; 标签内
  • 我遇到了错误。我可以通过邮件向您发送代码吗?在这里我不能。这是一个很长的答案......@nubteens
  • function setCost(id){ alert('我在这里 , id : '+id); form1.newyear.value=costyear; form1.submit();返回真; } 选择成本
【解决方案2】:

试试这个&lt;select&gt;&lt;%for(Cost c: costs) {%&gt;&lt;option value="&lt;%=c.getIdCost()%&gt;" onchange="setCost(&lt;%=c.getIdCost()%&gt;)"&gt;&lt;%=c.getYear()%&gt;&lt;/option&gt;&lt;%}%&gt;&lt;/select&gt;

【讨论】:

  • 我没有 Cost 课程。只是一个问题:是否可以在 setCost 函数中连接到数据库? @nubteens
  • 那么您要检索的实体是什么?可以,只要你使用&lt;%%&gt;标签
猜你喜欢
  • 2013-05-05
  • 2016-01-13
  • 2023-04-11
  • 2014-04-03
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多