0

我一直在其他帖子中寻找解决方案,但没有找到,也无法理解其他解决方案。

我想根据选择值显示 td 或其他。这个 td 位于一个循环内,该循环用一个键动态创建表的每一行。

这是我需要更改的代码部分。第一个 td 是选择要显示的内容。其他 td 必须根据第一个选择显示。

<%-- Empresa--%>
    <td>
        <% String onchange = "javascript:buttonUpdateVisibility(" + key + ",this);"; %>
        <select name="<%=contratoTrabajadorTipo%>" onchange="<%=onchange%>">
            <option value="<%=ContratoTrabajador.TIPO_CONTRATO%>"><bean:message key="contrata"/></option>
            <option value="<%=ContratoTrabajador.TIPO_SUBCONTRATA%>"><bean:message key="subcontrata"/></option>
        </select> 
    </td>
    <%-- Subcontrata --%>
    <td>
        <%  
            String keyContrata = key + "_contrata";
            String keySubcontrata = key + "_subcontrata";   
        %>
        <span id="<%=keyContrata%>" style="display: none;"><bean:write name="contratoEntregaForm" property="nombreEmpresa" /></span>
        <html:select styleId="<%=keySubcontrata%>" property="<%=contratoTrabajadorSubcontrata%>" styleClass="campoSelect">
            <html:options collection="<%=WebConstants.LISTA_EMPRESAS_KEY%>" labelProperty="nombreComercial" property="idEmpresa"/>
        </html:select>
    </td>

我试图创建一个用于更新可见性 buf 的 javascript 函数,但我不知道该怎么做。

function buttonUpdateVisibility(key,sel){
    if(sel.value == 'C'){
        document.getElementById(key+"_contrata").style.display = "none";
        document.getElementById(key+"_subcontrata").style.display = "block";
    } else if(sel.value == 'S'){
        document.getElementById(key+"_contrata").style.display = "block";
        document.getElementById(key+"_subcontrata").style.display = "none";
    }
}

也许可以使用 jquery 来实现,但我对该语言知之甚少。谢谢!

4

1 回答 1

0

尝试这个,

function buttonUpdateVisibility(key,sel){
    if(sel.value == 'C'){
        $("#"+key+"_contrata").hide();
        $("#"+key+"_subcontrata").show();
    } else if(sel.value == 'S'){
        $("#"+key+"_contrata").show();
        $("#"+key+"_subcontrata").hide();
    }
}

并调用函数

onchange="javascript:buttonUpdateVisibility('<%=key%>',this); ">
// Use quotes for key ----------------------^--------^
于 2013-10-16T08:02:17.907 回答