【问题标题】:Radio button disabled first, after submit again enabled单选按钮首先禁用,提交后再次启用
【发布时间】:2012-04-18 02:49:21
【问题描述】:

我有一个 jsp,其中一些单选按钮和文本框取决于下拉选择。
这是我的 jsp 和 javascript 代码。

jsp

         <s:form action="crInquiry" name="form">    
            <s:select name="filterValue" list="headerList"
    onchange="OnChange(this.form.filterValue);" />
            <s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}" 
label="Stage"></s:radio>
            <s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield>
            <s:radio name="ascOrder"  list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio>
            <s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit>
            <s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit>
            </s:form>

javascript

<script type="text/javascript">
    function OnChange(dropdown) {
        var myindex = dropdown.selectedIndex;
        document.form.filter[0].disabled = false;
        document.form.filter[1].disabled = false;
    if (myindex == 8) {
            alert("8");
            document.form.filter[0].disabled = true;
            document.form.filter[1].disabled = true;
            document.form.count.disabled = false;
            document.form.submit.disabled = false;
        }
        else if (myindex == 9) {
            alert("9");
            document.form.filter[0].disabled = true;
            document.form.filter[1].disabled = true;
            document.form.count.disabled = true;
            document.form.submit.disabled = false;
        }

        else{
            document.form.filter[0].disabled = false;
            document.form.filter[1].disabled = false;
            document.form.count.disabled = true;
            document.form.submit.disabled = false;
            }
        }


    function gotopage(actionname)
    {   
            document.form.action=actionname+".action";
            document.form.submit();
    }
</script>

问题是当我在下拉菜单中选择一个项目时说元素号。 8 或 9 所以通过 javascript 单选按钮应该禁用 9 的文本字段和单选按钮。 当我选择一个项目时,它完全禁用了依赖单选按钮或文本字段,但是当我提交时,它显示单选按钮已启用,因为我来到同一个 jsp。 我的 javascript 有什么问题?

【问题讨论】:

  • 您能描述一下启用单选按钮是什么意思,因为我使用的是同一个jsp
  • @UmeshAwasthi 我已经解决了这个问题,我认为问题是我将下拉列表作为参数发送给 OnChange 函数。但是当称它为主体的加载时,它不能给我表单元素的值。 Avi Y 的回答完全正确

标签: java javascript jsp struts2


【解决方案1】:

您还应该在页面加载事件中检查您的下拉值。

像这样的

<script type="text/javascript">

/**
* This function will be called twice - once on onChage event, and once on onLoad event
*/
    function OnChange() {
    dropdown = document.getElementById('myDropDown');
        var myindex = dropdown.selectedIndex;
        document.form.filter[0].disabled = false;
        document.form.filter[1].disabled = false;
    if (myindex == 8) {
            document.form.filter[0].disabled = true;
            document.form.filter[1].disabled = true;
            document.form.count.disabled = false;
            document.form.submit.disabled = false;
        }
        else if (myindex == 9) {
            document.form.filter[0].disabled = true;
            document.form.filter[1].disabled = true;
            document.form.count.disabled = true;
            document.form.submit.disabled = false;
        }

        else{
            document.form.filter[0].disabled = false;
            document.form.filter[1].disabled = false;
            document.form.count.disabled = true;
            document.form.submit.disabled = false;
            }
        }


    function gotopage(actionname)
    {   
            document.form.action=actionname+".action";
            document.form.submit();
    }
</script>

<body onload="OnChange()">
<s:form action="crInquiry" name="form">    
            <s:select name="filterValue" list="headerList" id="myDropDown"
    onchange="OnChange();" />
            <s:radio name="filter" list="#{'STATUS_FILTER_START':'START','STATUS_FILTER_END':'STOP'}" 
label="Stage"></s:radio>
            <s:textfield disabled="true" value="0" name="count" theme="css_xhtml"></s:textfield>
            <s:radio name="ascOrder"  list="#{'ASC':'ASC','DESC':'DESC'}"></s:radio>
            <s:submit value="Filter" onclick="gotopage('FilteredInquiryLog')"></s:submit>
            <s:submitvalue="Details" onclick="gotopage('crInquiry')"></s:submit>
            </s:form>

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,我认为您的 Javascript 没有问题。
    因为提交之前和提交之后的页面数据之间没有通信,所以会产生问题。

    您可以通过以下方法之一克服此问题。 1. 在 body 的“OnLoad”事件上调用你的 javascript,它对你也一样。
    2. 将页面的当前状态存储在某个控件(比如文本字段)中,并与页面的其他数据一起提交。在加载时(可能是 onLoad 或 JSP 页面的末尾),您可以使用该字段中的值恢复状态。

    我希望这对你有用。

    【讨论】:

    • 我曾尝试称它为 onload of body 但我不知道为什么当时没有调用它。我在 Onchange 函数的 if(8 或 9 条件)上写了一个警报,它在选择下拉列表时显示,但不显示 body 的加载
    猜你喜欢
    • 2013-12-21
    • 2012-06-11
    • 1970-01-01
    • 2016-05-31
    • 2021-09-10
    • 2011-03-31
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多