ASP.NET MVC Javascript在页面加载时未第一次启动

ASP.NET MVC Javascript在页面加载时未第一次启动,javascript,asp.net-mvc,Javascript,Asp.net Mvc,这应该是非常简单的,但我不能让它工作-我试图禁用2下拉列表时,用户点击一个复选框 @Html.DropDownList("StartTime", new List<SelectListItem> { new SelectListItem{ Text="10:00 AM", Value = "10:00 AM" }, new SelectListItem{ Text="12:00 PM", Value = "12:00 PM" }, new SelectList

这应该是非常简单的,但我不能让它工作-我试图禁用2下拉列表时,用户点击一个复选框

@Html.DropDownList("StartTime", new List<SelectListItem>
{
    new SelectListItem{ Text="10:00 AM", Value = "10:00 AM" },
    new SelectListItem{ Text="12:00 PM", Value = "12:00 PM" },
    new SelectListItem{ Text="2:00 PM", Value = "2:00 PM" }
}

@Html.DropDownList("EndTime", new List<SelectListItem>
{
    new SelectListItem{ Text="10:00 AM", Value = "10:00 AM" },
    new SelectListItem{ Text="12:00 PM", Value = "12:00 PM" },
    new SelectListItem{ Text="2:00 PM", Value = "2:00 PM" }
}
@Html.CheckBox("chkAllDayEvent", new { @onclick = "AllDayEvent_Checked();" })

<script type='text/javascript'>

function AllDayEvent_Checked() {
    $("#chkAllDayEvent").click(function () {
        $('#EndTime').attr("disabled", $(this).is(':checked'));
        $('#StartTime').attr("disabled", $(this).is(':checked'));
    });
}
</script>
我的问题是,当我进入页面时,Javascript不会启动,直到我点击复选框3次——第三次它禁用文本框,然后按照正常方式工作。

试试这个

@Html.CheckBox("chkAllDayEvent", new {@onclick = "AllDayEvent_Checked();" })

function AllDayEvent_Checked() {    
    $('#EndTime').attr("disabled", $("#chkAllDayEvent").is(':checked'));
    $('#StartTime').attr("disabled", $("#chkAllDayEvent").is(':checked'));

}
$(function(){
    $("#chkAllDayEvent").click(function () {
        $('#EndTime').attr("disabled", $(this).is(':checked'));
        $('#StartTime').attr("disabled", $(this).is(':checked'));
    });
});

@Html.CheckBox("chkAllDayEvent", new { @id = "chkAllDayEvent" })

这是因为您有一个为复选框分配单击处理程序的函数。然后单击复选框时触发此函数。因此,当第一次单击复选框时,您将为该复选框指定一个单击处理程序,而不是触发您想要的单击处理程序

试试这个:

<script type='text/javascript'>
$(document).ready(function () {
    $("#chkAllDayEvent").click(function () {
        $('#EndTime').attr("disabled", $(this).is(':checked'));
        $('#StartTime').attr("disabled", $(this).is(':checked'));
    });
});
</script>
试试这个

@Html.CheckBox("chkAllDayEvent", new {@onclick = "AllDayEvent_Checked();" })

function AllDayEvent_Checked() {    
    $('#EndTime').attr("disabled", $("#chkAllDayEvent").is(':checked'));
    $('#StartTime').attr("disabled", $("#chkAllDayEvent").is(':checked'));

}
$(function(){
    $("#chkAllDayEvent").click(function () {
        $('#EndTime').attr("disabled", $(this).is(':checked'));
        $('#StartTime').attr("disabled", $(this).is(':checked'));
    });
});

@Html.CheckBox("chkAllDayEvent", new { @id = "chkAllDayEvent" })
您不需要AllDayEvent\u Checked函数。当您使用jquery绑定它时


不起作用,@onclick给出了一个错误-它不需要加引号。另外,@onclick=blah在视图中呈现onclick事件时工作正常,只是在视图的前几次单击中似乎不起作用checkox@AntP,没错,我一回答就看到你的答案了。