Javascript Razor Dropdown onchange事件未触发始终未定义
我正在razor视图中使用dropdownlist帮助程序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
@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后缺少撇号。