再次启用提交后,首先禁用单选按钮

时间:2012-04-04 11:42:21

标签: java javascript jsp struts2

我有一个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单选按钮应该禁用两个和textfield和单选按钮9。 当我选择一个项目时,它完全禁用了相关的辐射按钮或文本字段,但是当我提交时,它会显示启用单选按钮,因为我来到同一个jsp。 我的javascript中有什么问题?

2 个答案:

答案 0 :(得分:2)

您还应该在页面onload事件上检查您的下拉列表值。

像这样的东西

<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>

答案 1 :(得分:1)

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

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

我希望这对你有用。