【问题标题】:Field addition based on drop down option selection in javajava中基于下拉选项选择的字段添加
【发布时间】:2015-09-11 06:18:46
【问题描述】:

我的服务器页面中有一个dropdown 列表字段。我想根据下拉菜单中选择的选项向页面添加文本字段。

渲染字段的java代码:

protected void printContent(HttpServletRequest request, HttpServletResponse response) {
        StringBuffer sb = new StringBuffer();
        makeJsScriptsAdvancedRest(request, sb);

        sb.append("<TABLE id='abc' style='width:100%;'> \n");
            makePagingTypeField(sb);
        sb.append("</TABLE>");
        if (option 1 : don't show fields)
        {
            sb.append("<TABLE id='certs1' style='display:none'>");
            makeField1(sb);
            sb.append("</TABLE>");
            sb.append("<TABLE id='certs2' style='display:none'>");
            makeField2(sb);
            makeField3(sb);
            makeField4(sb);
            sb.append("</TABLE>");
        }
        else if (option 2 : show fields in certs1)
        {
            sb.append("<TABLE id='certs1' style='display:block'>");
            makeField1(sb);
            sb.append("</TABLE>");
            sb.append("<TABLE id='certs2' style='display:none'>");
            makeField2(sb);
            makeField3(sb);
            makeField4(sb);
            sb.append("</TABLE>");
        }
        else if (option 3 : show fields in certs2)
        {
            sb.append("<TABLE id='certs1' style='display:none'>");
            makeField1(sb);
            sb.append("</TABLE>");
            sb.append("<TABLE id='certs2' style='display:block'>");
            makeField2(sb);
            makeField3(sb);
            makeField4(sb);
            sb.append("</TABLE>");
        }
        print(sb, true);
    }

编辑:

根据drgPP的回答,我将代码更改如下。 Javascript代码:

FLD_PagingType 是 PaginField 下拉列表的名称。

protected void makeJsScriptsAdvancedRest(HttpServletRequest request,StringBuffer sb)    {
    sb.append("<script type=\"text/javascript\">\n");
    sb.append("function updateValues() {\n");
    sb.append(" var y = document.getElementById('certs1'); var z = document.getElementById('certs2');"+

            " var x = document.getElementById('" + FLD_PagingType + "'); var w = x.options[x.selectedIndex].text;" +

            "if(w =='" + PAGE_BASED + "') { y.style.display = 'block'; z.style.display = 'none'; }" +

            "else if(w =='" + RECORD_BASED + "') { y.style.display = 'none'; z.style.display = 'block';}  " +

            "else if(w =='" + NO_PAGINATION + "') { y.style.display = 'none'; z.style.display = 'none';} \n");

    sb.append("}\n");
    sb.append("</script>\n");
}

getSelectValue() 返回字符串选项值。

我可以正确操作选择字段,但选择选项时 UI 上的内容会发生变化。

任何建议,指针表示赞赏!

【问题讨论】:

  • 我真的不明白你的问题/问题。
  • 我想要根据所选选项在 UI 上添加不同字段集的功能。但是使用上面的代码,即使在选择字段发生变化之后,UI 上也没有附加字段
  • 是javascript还是java代码的问题?您可以将问题编辑为MCVE - 创建jsfiddle 来演示问题会有所帮助
  • @Mousey 我不知道错误在哪里,这就是我在这里发帖的原因。但现在我知道错误出在 javascript 中。我编辑了javascript的代码
  • @Vaishnavee 将编辑调试标签的 wiki 并提供一些调试资源 - stackoverflow.com/tags/debugging/info - 调试标签中的热门问题也很有用

标签: javascript java drop-down-menu


【解决方案1】:

首先,在javascript中,要测试相等性,您必须使用==(测试值)或===(测试值和类型),但不能使用equals()方法(这是一个java方法)。

你在标签中提到了jQuery,并且你使用了JavaScript

示例如何使用 jQuery 在&lt;select&gt;&lt;/select&gt; 事件上添加监听器。

HTML:

<input id="field" name="field" type="text" value="" />
<select id="test" name="test">
 <option value="1">First value</option>
 <option value="2">Second value</option>
</select>

jQuery:

<script>
$(document).ready(function() {
    $("#test").change(function() {
       var selectedValue = $("#test").val();
       if (selectedValue == "1") {
          $("#field").val("First option selected");
       } else {
          $("#field").val("Second option selected");
       }
    }
    });
});
</script>

P.S: 使用前别忘了导入 jQuery 库。

【讨论】:

  • 感谢您的回复,我只是 Java 脚本的初学者,不确定在我的上下文中使用 jQuery。如果我必须坚持使用 javaScript(不导入 jQuery 库),我可以这样做吗?
  • @Vaishnavee 是的,jQuery 只是一个基于 JavaScript 构建的库,它使语法更简单,并提供了许多有用的功能。我认为使用== 比较字段应该可以解决您的问题。但是您必须将onchange 事件绑定到您的选择标签。
  • 是的,我正在为下拉列表设置setOnChange("updateValues();")。我将尝试使用== 比较。
  • 部分正确,现在字段已附加并且它们发生了变化-java代码printContent()中的案例2和3但在选项1中我想隐藏字段。但附加的字段并没有消失。
  • @Vaishnavee 您必须确保变量 NO_PAGINATION 的值与 TEXT 相同(注意空格和大小写)(注意您正在提取选项的文本,而不是值)您正在从负责隐藏表格的 &lt;select&gt; 标记中进行选择。
猜你喜欢
  • 2020-01-08
  • 2022-01-05
  • 2012-06-11
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多