Javascript onblur事件未从Html.TextBoxFor helper触发

Javascript onblur事件未从Html.TextBoxFor helper触发,javascript,jquery,asp.net-mvc-3,Javascript,Jquery,Asp.net Mvc 3,我遵循了一个示例,该示例从TextBoxFor helper调用了一些javascript代码,如下所示: <%=Html.TextBoxFor(c => Model.Birthdate, new { @class = "datepicker", maxlength = 10, @onblur = "chkBirthday" })%> <script type="text/javascript"> $(document).on("blur", "select[na

我遵循了一个示例,该示例从TextBoxFor helper调用了一些javascript代码,如下所示:

<%=Html.TextBoxFor(c => Model.Birthdate, new { @class = "datepicker", maxlength = 10, @onblur = "chkBirthday" })%>
<script type="text/javascript">
$(document).on("blur", "select[name=MainContent_Birthdate]",
    function chkBirthday() {

        document.getElementById("MainContent_ErrorMessage").visibility = 'visible';
        document.getElementById("MainContent_ErrorMessage").innerHTML = 'Testing';

    });
Model.Birthdate,新的{@class=“datepicker”,maxlength=10,@onblur=“chkBirthday”}]>
我的javascript,在asp:Content头中,如下所示:

<%=Html.TextBoxFor(c => Model.Birthdate, new { @class = "datepicker", maxlength = 10, @onblur = "chkBirthday" })%>
<script type="text/javascript">
$(document).on("blur", "select[name=MainContent_Birthdate]",
    function chkBirthday() {

        document.getElementById("MainContent_ErrorMessage").visibility = 'visible';
        document.getElementById("MainContent_ErrorMessage").innerHTML = 'Testing';

    });

$(文档)。在(“模糊”,“选择[name=MainContent\u Birthdate]”上,
函数chkBirthday(){
document.getElementById(“MainContent_ErrorMessage”)。可见性='visible';
document.getElementById(“MainContent_ErrorMessage”).innerHTML='Testing';
});

我尝试了几个选项,当我从助手中取出标签时,可以得到一些东西,包括在我的函数中有一个警报(“测试”),删除行$(文档),给元素全名(MainContent前缀),但没有任何效果

我将Chrome与他们的开发工具一起使用,可以看到助手生成的元素名称是正确的。我不知道怎么了


有人能帮忙吗?

元素不是文本框吗?您正在使用下拉列表的选择器(选择)。试试这个:

$(document).on("blur", "input[name=MainContent_Birthdate]"
                         ^^^
看看这是否有效


您的选择器无效。您应该使用
输入[name=MainContent\u Birthdate]

谢谢Hanlet,您也是正确的。不幸的是,我认为我只能选择一个答案,所以选择第一个答案似乎是最公平的方式。不相关,但值得一提的是——我发现与元素的工作方式保持一致更容易。我注意到您同时使用了vanilla JS和jQuery。vanilla JS可以很容易地替换为
$('MainContent\u ErrorMessage').css('visibility',visible')$('MainContent'u ErrorMessage').html('Testing')在功能上是相同的,但在视觉上它更优越,因为它与您的事件处理程序一致(它的键入长度也缩短了一两个字符)