0
此方法響應select元素的OnChange方法。當用戶切換到文本模式時,我通知該用戶輸入的內容將會丟失。用戶可能決定取消操作並保留他/她所在的任何模式(文本或發佈)。jQuery方法不會讀取全局變量,除非我首先使用alert()
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的價值是電子郵件,這是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>
聽起來像一個競爭條件。什麼觸發'DisplaySMSElements'? –
@KevinB,請參閱更新。 – Richard77