此方法响应选择元素的 OnChange 方法。当用户切换到文本模式时,我会通知该用户输入的内容将会丢失。用户可能决定取消操作并保持他/她所处的任何模式(文本或帖子)。
function DisplaySMSElements() {
var goSMS = false;
// alert(previousAlertType); ==> IMPORTANT
if ($('#User_AlertType').val() == '<%= (int) AlertType.SMS %>') {
if(isRichTextMessage)
{
if($('#User_Message').val().length > 0)
{
goSMS = confirm('Switching to text mode will
result to data lost. Would you like to proceed?');
}
else {
goSMS = true;
}
if (goSMS) {
$('#User_Message').val('');
SMSCount = maxSMSCount;
isRichTextMessage = false;
disableTinyMCE();
}
else
{
$('#User_AlertType').val(previousAlertType);
}
}
}
else
{
if (isRichTextMessage == false) {
enableTinyMCE();
isRichTextMessage = true;
}
}
DisplaySMSCount();
}
我引入了一个名为 previousAlertType 的全局变量,当这个元素获得焦点时,它保存选择元素的值:
$(document).ready(function() {
$('#User_AlertType').focus(function () {
previousAlertType = this.value;
});
}
页面加载时,previousAlertType 的值为 Email,即 1。
var previousAlertType = '<%= (int)AlertType.Email %>';
问题是它不起作用,除非我使用警报添加显示它的行(表示重要的行)。
我添加了警报以检查 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>