JavaScript失败,原因尚不清楚
本文关键字:不清楚 失败 JavaScript | 更新日期: 2023-09-27 17:59:29
我正试图在代码中实现一件简单的事情。根据下拉列表的值,我需要将display none设置为其他div。代码的第一部分是当我用数据库中的信息填充页面时。
<div class="row" id="boxNivelDesconto">
@Html.LabelFor(model => model.CodigoNivelDesconto)
<div class="right">
@Html.DropDownListFor(model => model.CodigoNivelDesconto, ViewBag.ListaDescontos as SelectList, new { @class = "big" })
@Html.ValidationMessageFor(model => model.CodigoNivelDesconto)
</div>
</div>
<div class="row" id="boxJustificativaDesconto">
@Html.LabelFor(model => model.CodigoJustificativaDesconto)
<div class="right">
@Html.DropDownListFor(model => model.CodigoJustificativaDesconto, ViewBag.ListaJustificativas as SelectList, new { @class = "big" })
@Html.ValidationMessageFor(model => model.CodigoJustificativaDesconto)
</div>
</div>
<div class="row" id="boxListaCategoria">
@Html.LabelFor(model => model.Categoria)
<div class="right">
@if (Model.TipoCliente == (short)Karcher.Portal.Web.Models.TipoCliente.PessoaJuridica)
{
@Html.DropDownListFor(model => model.CodigoCategoria, ViewBag.ListaCategorias as SelectList, new { @class = "big" })
}
else
{
@Html.DropDownListFor(model => model.CodigoCategoria, ViewBag.ListaCategorias as SelectList, new { @class = "big oculto" })
<input id="CodigoCategoria-textbox" class="disabled" readonly="readonly" style="vertical-align: top; width: 367px" value="@Model.Categoria.Descricao" />
}
@Html.Hidden("CategoriaTrue", Model.CodigoCategoria)
<a class="item small text" id="ajuda" style="cursor: pointer" title="Selecione para visualizar a ajuda.">
<img alt="Ajuda?" src="@Url.Content("~/Content/theme/gfx/icons/small/help.png")" /><span>Ajuda</span>
</a>
<div id="contOutros" style="display: none;">
<div class="content">
<div class="row">
<h2>
Documentos necessários para anexo</h2>
<p>
Segue abaixo os documentos necessários para anexar na proposta:</p>
<ul>
<li>Contrato Social ou Requerimento de Empresário <i>(opcional)</i></li>
<li>Cartão CNPJ</li>
<li>Sintegra (caso cliente possua I.E.)</li>
</ul>
</div>
</div>
</div>
<div id="contRevenda" style="display: none;">
<div class="content">
<div class="row">
<h2>
Documentos necessários para anexo</h2>
<p>
Segue abaixo os documentos necessários para anexar na proposta:</p>
<ul>
<li>Contrato Social ou Requerimento de Empresário <i>(opcional)</i></li>
<li>Cartão CNPJ</li>
<li>Sintegra (caso cliente possua I.E.)</li>
<li>Fotos fachada, balcão, estoque e oficina</li>
<li>Carta de Autorização de débito em conta corrente </li>
</ul>
</div>
</div>
</div>
<div id="contConsumidor" style="display: none;">
<div class="content">
<div class="row">
<h2>
Documentos necessários para anexo</h2>
<p>
Segue abaixo os documentos necessários para anexar na proposta:</p>
<ul>
<li>Contrato Social ou Requerimento De Empresário <i>(opcional)</i></li>
<li>Descrição Do Material a ser negociado mais o Valor do Pedido </li>
</ul>
<ul>
<li><b>OBS.:</b> Ao negociar equipamentos(a partir da BD530)</li>
<li>Enviar preenchido Contrato de Alienação</li>
<li>Para locação enviar preemchido Contrato de Locação.</li>
</ul>
</div>
</div>
</div>
@Html.ValidationMessageFor(model => model.CodigoCategoria)
</div>
</div>
因此,我对字段值进行了简单的验证,根据这一点,一些div需要不显示任何值,正如我之前所说的。
if (($("#CodigoNivelDesconto").val() == '') && ($("#CodigoJustificativaDesconto").val() == '') && ($("#CodigoCategoria").val() == '12')) {
$("#boxNivelDesconto").attr("style", "display:none;");
$("#boxJustificativaDesconto").attr("style", "display:none;");
}
但是,例如,当我在Firefox中运行该页面时,会从javascript返回一条错误消息,显示"a.ownerDocument为null"。或者在Chrome中,错误消息为"无法读取null的属性'tagname'"。
有人知道发生了什么事吗?有什么建议可以解决吗?这让我疯了。我已经尝试了很多变通方法来解决它,但没有成功。
请帮帮我!
提前谢谢。
您是否验证了您的选择器是否返回了您期望的结果?
在处理剩下的代码之前,请尝试检查选择器是否返回了一些东西,即
if ($("#CodigoNivelDesconto").length > 0) { alert ('found it!'); }
我不熟悉MVC,但从你目前发布的内容来看,你可能需要将@id添加到你的助手中:
@Html.DropDownListFor(model => model.CodigoNivelDesconto, ViewBag.ListaDescontos as SelectList, new { @id="CodigoNivelDesconto", @class = "big" })