Javascript Razor Dropdown onchange事件未触发始终未定义

Javascript Razor Dropdown onchange事件未触发始终未定义,javascript,jquery,asp.net-mvc,asp.net-mvc-4,razor,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,Razor,我正在razor视图中使用dropdownlist帮助程序 @Html.DropDownList("Country", null, "Select Your Country", new { @class = "form-control", onchange = "clickMe()" }) 我已将jquery文件放在Layout.cshtml的head部分 <head> <meta charset="utf-8" /> <meta name="vi

我正在razor视图中使用dropdownlist帮助程序

@Html.DropDownList("Country", null, "Select Your Country", new { @class = "form-control", onchange = "clickMe()" })
我已将jquery文件放在Layout.cshtml的head部分

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Scripts.Render("~/bundles/jquery")
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>

@ViewBag.Title-我的ASP.NET应用程序
@Scripts.Render(“~/bundles/jquery”)
@style.Render(“~/Content/css”)
@Scripts.Render(“~/bundles/modernizer”)
但是当我把我的脚本放在一个锐利的视图中

<script>
    $(document).ready(function () {
        function clickMe() { 
            alert();
        }
    });
</script>

$(文档).ready(函数(){
函数clickMe(){
警惕();
}
});
它给出了引用错误:clickMe()未定义。 当我尝试用这段代码弹出一个警报来检查我的jquery文件是否已加载时 这个很好用

<script>
    $(document).ready(function () {
        alert();
    });
</script>

$(文档).ready(函数(){
警惕();
});

我更喜欢将单击事件放在脚本中。尝试删除更改事件并将功能clickMe替换为

$(document).on('change', '#Country', function(){
    alert('made it!');
});

这将在下拉列表的ID上进行选择,我认为该下拉列表将是呈现下拉列表中的国家/地区

我更喜欢将单击事件放在脚本中。尝试删除更改事件并将功能clickMe替换为

$(document).on('change', '#Country', function(){
    alert('made it!');
});

这将在下拉列表的ID上进行选择,我认为该下拉列表将是呈现下拉列表中的国家/地区。这不起作用的实际原因是。以下代码:

@Html.DropDownList("Country", 
  null, 
  "Select Your Country", 
  new { @class = "form-control", 
        onchange = "clickMe()" })
产生类似(我希望)的结果:


//这是在寻找一个全局“clickMe()”函数
//但是它有吗?
我在这里为您的代码添加了注释:

  // clickMe() is out of scope
  // it is not available here

  $(document).ready(function () 
  // start of anonymous function scope
  {

    function clickMe() 
    // start of clickme function scope
    { 
      alert();
    }
    // end of clickme function scope

    // clickMe() is available here
    // it was defined in this scope

  });
  // end of anonymous function scope

  // clickMe() is out of scope
  // it is not available here

</script>

//clickMe()超出范围
//这里没有
$(文档).ready(函数()
//匿名函数作用域的开始
{
函数clickMe()
//clickme功能范围的开始
{ 
警惕();
}
//clickme功能范围结束
//单击我()在此处可用
//它是在这个范围内定义的
});
//匿名函数作用域的结束
//clickMe()超出范围
//这里没有
我绝对不建议这样做,但要了解如何让它工作得很糟糕,您可以执行以下操作:


$(文档).ready(函数()
{
window.clickMe=函数()
{ 
警惕();
}
});
通过将函数指定给窗口对象,可以使其全局可用

更好的方法是利用以下优势:

<script>
    $(document).ready(function () {

        function clickMe() { 
            alert('made it!');
        }

        $(document).on('change', '#Country', clickMe );
    });
</script>

$(文档).ready(函数(){
函数clickMe(){
警惕(“成功!”);
}
$(文档)。在('更改','国家',单击我);
});

这不起作用的实际原因是。以下代码:

@Html.DropDownList("Country", 
  null, 
  "Select Your Country", 
  new { @class = "form-control", 
        onchange = "clickMe()" })
产生类似(我希望)的结果:


//这是在寻找一个全局“clickMe()”函数
//但是它有吗?
我在这里为您的代码添加了注释:

  // clickMe() is out of scope
  // it is not available here

  $(document).ready(function () 
  // start of anonymous function scope
  {

    function clickMe() 
    // start of clickme function scope
    { 
      alert();
    }
    // end of clickme function scope

    // clickMe() is available here
    // it was defined in this scope

  });
  // end of anonymous function scope

  // clickMe() is out of scope
  // it is not available here

</script>

//clickMe()超出范围
//这里没有
$(文档).ready(函数()
//匿名函数作用域的开始
{
函数clickMe()
//clickme功能范围的开始
{ 
警惕();
}
//clickme功能范围结束
//单击我()在此处可用
//它是在这个范围内定义的
});
//匿名函数作用域的结束
//clickMe()超出范围
//这里没有
我绝对不建议这样做,但要了解如何让它工作得很糟糕,您可以执行以下操作:


$(文档).ready(函数()
{
window.clickMe=函数()
{ 
警惕();
}
});
通过将函数指定给窗口对象,可以使其全局可用

更好的方法是利用以下优势:

<script>
    $(document).ready(function () {

        function clickMe() { 
            alert('made it!');
        }

        $(document).on('change', '#Country', clickMe );
    });
</script>

$(文档).ready(函数(){
函数clickMe(){
警惕(“成功!”);
}
$(文档)。在('更改','国家',单击我);
});

这里是另一个选项:

<script>
 $('#CountryID').change(function() {
    var value = $('#CountryID').val();


<script>

$('#CountryID').change(function(){
var值=$('#CountryID').val();

只需确保您提供了下拉列表名称=或id=

以下是另一个选项:

<script>
 $('#CountryID').change(function() {
    var value = $('#CountryID').val();


<script>

$('#CountryID').change(function(){
var值=$('#CountryID').val();

只需确保您提供的下拉列表名称=或id=

box()
是一个与您显示的代码无关的函数-您的意思是
clickMe()
?您显示的代码工作正常。
box()
是一个与您显示的代码无关的函数-您的意思是
clickMe()
?您显示的代码工作正常。您的输入有误,第一个CountryId后缺少撇号。您的输入有误,第一个CountryId后缺少撇号。