2011-02-08 10 views
3

私は、ダイアログが閉じられたりキャンセルされたときに以下のコードがクラッシュする理由を理解しようとしています。ダイアログボタン機能で($ this)を使用する行でエラーが発生します。

私はaddTaskDialog.html(AddTaskForm)にハードコード値を設定します。できます。私は返されたajaxフォームをハードコードしていて、うまくいきました...この問題はすべてのブラウザで発生します。

$(function() 
{ 

    /* 
    * Initializes AddTask Dialog (only needs to be done once!) 
    */ 
    var $dialog = $('<div></div>').dialog(
{ 
    width: 580, 
    height: 410, 
    resizable: false, 
    modal: true, 
    autoOpen: false, 
    title: 'Basic Dialog', 
    buttons: 
     { 
      Cancel: function() 
      { 
       $dialog.dialog('close'); 
      }, 
      'Create Task': function() 
      { 

      } 
     }, 
    close: function() 
    { 
     $dialog.dialog('close'); 
    } 
}); 


    /* 
    * Click handler for dialog 
    */ 
    $('#AddTask').click(function() 
    { 

     /* Ajax request to load form into it */ 
     $.ajax({ 
      type: 'Get', 
      url: '/Planner/Planner/LoadAddTaskForm', 
      dataType: 'html', 
      success: function (AddTaskForm) 
      { 
       $dialog.html(AddTaskForm); 
       $dialog.dialog('open'); 
      } 
     }); 
    }); 



}); 

});

+0

AddTaskFormとして返されるのは何ですか? –

+0

HTML形式の部分図です。私はそれもいくつかの追加のjavacriptファイルが含まれていると思う – chobo

答えて

0

私は考え出しそれを出す。私はこのコードをどこに持っているのかは分かりませんが、問題を引き起こしていたので、私はそれを取り出してすべてうまく動作します。

close: function() 
{ 
    $dialog.dialog('close'); 
} 
1

私は何が起こっているか知っていると思います。あなたの成功コールバックでは、あなたがAddTaskDialogOptions$(this)を参照している問題は、この範囲で$(this)は、もはや$("#AddTask")を意味しますので、そのよう$(this)への参照を保持する変数を設定する必要がないということです。

var that; 
$('#AddTask').click(function() 
{ 
    that = $(this); 
    /* Ajax request to load form into it */ 
    $.ajax({ 
     type: 'Get', 
     url: '/Planner/Planner/LoadAddTaskForm', 
     dataType: 'html', 
     success: function (AddTaskForm) 
     { 
      var addTaskDialog = $('<div></div>'); 
      addTaskDialog.dialog(AddTaskDialogOptions); 
      addTaskDialog.html(AddTaskForm); 
      addTaskDialog.dialog('open'); 
     } 
    }); 
}); 
var AddTaskDialogOptions = { 
    width: 580, 
    height: 410, 
    resizable: false, 
    modal: true, 
    autoOpen: false, 
    title: 'Basic Dialog', 
    buttons: 
     { 
      Cancel: function() 
      { 
       that.dialog('close'); 
      }, 
      'Create Task': function() 
      { 

      } 
     }, 
    close: function() 
    { 
     that.dialog('destroy').remove(); 
    } 
} 
+0

私はもはやエラーを取得しませんが、キャンセルボタンは何もしないと私はxボタンをクリックするとダイアログを閉じ、私が保つためにいくつかの追加htmlを削除します – chobo

+0

AddTaskDialogOptionsが使用されている場所($(document).ready()内で可能)を投稿できますか?私は$(この)参照が別のリソースを指しているかもしれないと考えています。 – Adrian

+0

私のコードは全部更新されました – chobo

関連する問題