¿Por qué el código jQuery no se llama aquí ... por favor sugiera?

Debajo de todo mi código,

*Modelo *

A continuación se muestra el código del modelo,

public class MyViewModel
{
    public int? Year { get; set; }
    public int? Month { get; set; }

    public IEnumerable<SelectListItem> Years
    {
        get
        {
            return Enumerable.Range(2000, 12).Select(x => new SelectListItem
            {
                Value = x.ToString(),
                Text = x.ToString()
            });
        }
    }
}

Normativa

A continuación se muestra el código del controlador,

//
    // GET: /MenuSix/

    public ActionResult Index()
    {
        var model = new MyViewModel();
        return View(model);
    }

    public ActionResult Months(int year)
    {
        if (year == 2011)
        {
            return Json(
                Enumerable.Range(1, 3).Select(x => new { value = x, text = x }),
                JsonRequestBehavior.AllowGet
            );
        }
        return Json(
            Enumerable.Range(1, 12).Select(x => new { value = x, text = x }),
            JsonRequestBehavior.AllowGet
        );
    }

Ver

A continuación se muestra el código de vista,

@model DemoWeb.Models.MenuSix.MyViewModel
@using (Html.BeginForm()) 
{
@Html.DropDownListFor(
x => x.Year,
new SelectList(Model.Years, "Value", "Text"),
"-- select year --"
)
@Html.DropDownListFor(
x => x.Month,
Enumerable.Empty<SelectListItem>(),
"-- select month --"
)
}

@section PageScriptsAndCSS{
<script type="text/javascript">
    $('#Year').change(function () {
        debugger;
        var selectedYear = $(this).val();
        if (selectedYear != null && selectedYear != '') {
            $.getJSON('@Url.Action("Months")', { year: selectedYear }, 
 function    (months) {
                var monthsSelect = $('#Month');
                monthsSelect.empty();
                $.each(months, function (index, month) {
                    monthsSelect.append($('<option/>', {
                        value: month.value,
                        text: month.text
                    }));
                });
            });
        }
    });

</script>
}

Estoy probando el código anterior, pero en el código jquery no llamado aquí, sugiera por qué el evento de cambio desplegable no se llama en jquery.

preguntado el 01 de julio de 12 a las 07:07

1 Respuestas

Envuelva el código javascript en document.ready para asegurarse de que el control esté disponible al vincular el evento. Parece que este javascript se representa en la cabeza y en ese momento el menú desplegable aún no se ha agregado al DOM

$(document).ready(function()

{ $("#año").///resto del código });

Respondido 01 Jul 12, 08:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.