首页 > 解决方案 > javascript捕获一个输入

问题描述

我试图捕捉这个选择的变化:

 @if (!Model.Id.Equals(null))
            {
            @Html.DropDownListFor(m => m.Modificar.IdClase, new SelectList(Model.ListaClases, "IdClase", "Clase", Model.Modificar.IdClase), new { @class = "input form-control input-lg", @required = "required", @style = "height: 40px; font-size:16px" })
            }
            else
            {
            @Html.DropDownListFor(m => m.ListaClases, new SelectList(Model.ListaClases, "IdClase", "Clase"), new { @class = "input form-control input-lg", @required = "required", @style = "height: 40px; font-size:16px" })
            }

使用变量去激活

var clases = $('#Id').val() != "" ? $('#Modificar_IdClase') : $('#ListaClases');

我在console.log(clases)Modificar_IdClase 中看到像输入而不是选择一样被捕获。为什么会发生,我该如何解决?

console.log(clases)

水图像介绍

编辑 1

在 Chrome DevTools 中编写的 html 代码是:

Modificar_IdClase:

<select class="input form-control input-lg" id="Modificar_IdClase" name="Modificar.IdClase" required="required" style="height: 40px; font-size:16px">
<option selected="selected" value="1">Articulo principal</option>
<option value="2">Articulo auxiliar</option>
</select>

列表类:

<select class="input form-control input-lg" id="ListaClases" name="ListaClases" required="required" style="height: 40px; font-size:16px">
<option value="1">Articulo principal</option>
<option value="2">Articulo auxiliar</option>
</select>

问题在于DropDownListFor一个是获取数据并获取input而不是select

标签: javascriptc#asp.net-mvc

解决方案


将您的代码更改为

var clases = $('#Id').val() != "" ? $('#Modificar_IdClase').val() : $('#ListaClases').val();

因为$('#Modificar_IdClase')返回 DOM 对象,如果你想获取标签的类,你可以使用$('#Modificar_IdClase').attr('class')

$(document).ready(function(){
console.log($('#Modificar_IdClase').val());
console.log($('#Modificar_IdClase').attr('class'));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id='Modificar_IdClase' class='input form-control input-lg'>
  <option value="test">Test</option>
</select>


推荐阅读