Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery方法没有';除非我先使用alert(),否则我无法读取全局变量_Jquery_Asp.net Mvc 2 - Fatal编程技术网

jQuery方法没有';除非我先使用alert(),否则我无法读取全局变量

jQuery方法没有';除非我先使用alert(),否则我无法读取全局变量,jquery,asp.net-mvc-2,Jquery,Asp.net Mvc 2,此方法响应select元素的OnChange方法。当用户切换到文本模式时,我会通知该用户键入的内容将丢失。用户可能会决定取消操作并保持他/她处于的任何模式(文本或帖子) 加载页面时,previousAlertType的值为Email,即1 var previousAlertType = '<%= (int)AlertType.Email %>'; var-previousAlertType=''; 问题是,除非我使用警报添加显示它的行(表示重要的行),否则它不会工作 我添加了警

此方法响应select元素的OnChange方法。当用户切换到文本模式时,我会通知该用户键入的内容将丢失。用户可能会决定取消操作并保持他/她处于的任何模式(文本或帖子)

加载页面时,previousAlertType的值为Email,即1

var previousAlertType = '<%= (int)AlertType.Email %>'; 
var-previousAlertType='';
问题是,除非我使用警报添加显示它的行(表示重要的行),否则它不会工作

我添加了警报以检查previousAlertType的值。完成后,我删除了它,方法停止工作。在研究了原因之后,我把它放了回去,然后这个方法起作用了。我只是不明白这个问题

谢谢你的帮助

编辑: 这就是触发上述方法的原因

<select id="User_AlertType" name="User_AlertType" 
         onchange="javascript: DisplaySMSElements()">

         <option value="<%= (int)AlertType.Email %>">Email</option>
         <option value="<%= (int)AlertType.SMS %>">Text</option>
         <option value="<%= AlertType.Post %>">Post</option>
</select>

电子邮件
正文
邮递

您的问题可能是许多不同的事情。您尚未发布显示故障的完整代码集。如果您声称存在变量范围问题,那么如果您希望任何人找到解决方案,则需要显示变量定义的范围

您显示的jQuery代码片段(doc:ready)缺少一个闭括号

这把小提琴很好

var-previousAlertType='';
$(文档).ready(函数(){
$('#User_AlertType')。焦点(函数(){
previousAlertType=this.value;
}).更改(显示选择);
});

听起来像是比赛条件。什么触发了
显示选择
?@KevinB,请查看更新。
var previousAlertType = '<%= (int)AlertType.Email %>'; 
<select id="User_AlertType" name="User_AlertType" 
         onchange="javascript: DisplaySMSElements()">

         <option value="<%= (int)AlertType.Email %>">Email</option>
         <option value="<%= (int)AlertType.SMS %>">Text</option>
         <option value="<%= AlertType.Post %>">Post</option>
</select>
var previousAlertType = '<%= (int)AlertType.Email %>'; 

$(document).ready(function() {
   $('#User_AlertType').focus(function () {
      previousAlertType = this.value; 
   }).change(DisplaySMSElements);
});