Javascript:根据下拉列表的当前值显示/隐藏行

标签 javascript asp-classic

在这个场景中我正在使用 Javascript 和 ASP。当此特定页面打开时,我的下拉菜单之一已填充“打开”或“关闭”状态 - 您可以看到该值来 self 的记录集中的 ID。

我现在想做的是:如果页面首次加载时的状态是“已关闭”并且用户决定将其更改为“打开”,他们必须重新输入“重新打开原因” - 所以,这将在下拉列表下方显示标题和文本框...

这是我到目前为止所尝试过的:我创建了一个 showHide() 函数并将其放置在下拉列表中的选择内部,但它没有执行任何操作,所以现在被卡住了。任何帮助表示赞赏。谢谢!

  <select name="cboStatus" id="cboStatus" style="width:200px" onchange="showHide();">                           <%
                        RSStatus.MoveFirst
                        If Not RSStatus.EOF Then
                            Do While Not RSStatus.EOF
                                %><option value='<%= RSStatus("ID")%>'
                                <%If RSStatus("ID") = RS("prjStatus") Then Response.Write "selected"%>><%= RSStatus("prjStatus")%></option><%
                                RSStatus.MoveNext
                            Loop
                        End If
                        %>           
                    </select>

由上述 JS 生成的 HTML:

<tr id="lbReopenReason" style="display:none">
                <td bordercolor="#f0f0e4" bgcolor="#f0f0e4"><h3>Reopen Reason</h3></td>
              </tr>
              <tr id="trReopenReason" style="display:none">
                <td bordercolor="#FFFFFF" bgcolor="#FFFFFF">
                <input name="txtReopenReason" type="text" id="txtReopenReason" value="<%If (RS("reOpenReason")) <> "" Then Response.Write(RS("reOpenReason"))%>" size="100" />
                </td>
              </tr>     

Javascript:

    function showHide()
        {
            var cboStatus = document.getElementById("cboStatus");
                  var cboStatusValue = cboStatus.options[cboStatus.selectedIndex].text;
            var lbReopenReason = document.getElementById("lbReopenReason");             var trReopenReason = document.getElementById("trReopenReason");         

            //If the status of the project is Closed at the time of page load, and that status changes, then the user must enter a re-open reason.
            if ( (status == 3) && (cboStatusvalue == 'Open' )
            {
                lbReopenReason.style.display = "";
                trReopenReason.style.display = "";
                }
                  else
{
                lbReopenReason.style.display = "none";
            trReopenReason.style.display = "none";
            }
    }  

最佳答案

看起来这里有两个问题:

1)您的函数被称为“statusShowHide()”,而不是“showHide()”,因此这可能是它没有被调用的原因。 2)您的 onchange 属性在函数调用后缺少结束引号,因此也可能是这样。

尝试一下这些修复,看看它现在是否有效。

编辑:更多建议:

在你的 showHide() 方法中你说:

if ( (status == 3) && (cboStatusvalue == 'Open' )

什么时候应该是:

if ( (cboStatus === 3) && (cboStatusValue === 'Open' ) )

此外,而不是您当前获取元素值的方式:

var cboStatusValue = cboStatus.options[cboStatus.selectedIndex].text;

尝试使用:

var cboStatusValue = cboStatus.value;

关于Javascript:根据下拉列表的当前值显示/隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10855999/

相关文章:

javascript - 带有切换按钮的 jQuery 幻灯片动画 div 每隔一段时间而不是每次都工作

Javascript 性能 : multiple fooBaz VS multiple Foo. Bar.Baz

session - 如何保护经典 ASP ASPSESSIONID cookie 的安全?

vbscript - DateDiff 返回 Null 或 vbNull 但无法在 if 语句中检查它

javascript - 对 spring @ResourceMapping 方法进行 react ,未使用相同的请求参数调用

javascript - 你如何将双引号整数转换为整数?

javascript - 更新组件状态以使用 Redux 查看 Flatlist 中的数据

javascript - 打开 "Save As"对话框下载图片

asp-classic - CDO 电子邮件主题特殊字符错误

debugging - 使用console.log进行经典ASP调试