2014-01-02 2 views
0

Я столкнулся с странным поведением JQuery, я уверен, что это связано с JQuery, а не с jtable, который я использую для всей моей реализации.Странное поведение JQuery: несколько диалогов

У меня есть два столбца для редактирования и удаления, которые я настроил и заменил с помощью функции jTabel по умолчанию. Как только я нажму кнопку «Редактировать», появится «Дайлог» для редактирования. Я отменяю и снова нажимаю на любую часть строки jtabel, она снова открывает тот же диалог, который я открыл ранее для редактирования записи. Более того, если я нажму кнопку «удалить», он снова откроет диалог диалога (т.е. отредактирует).

Я искал, люди сказали, что используют диалоговое окно $ (диалоговое окно). Dialog ('destroy'). Remove(); он работает, но после палат снова я не могу взаимодействовать с диалогом редактирования, так как он полностью удален. Я также пробовал только с $ ("dialog-form"). Destroy (''). Это совершенно странное поведение. Из-за этого мой Partial View не отображается в диалоговом окне JQuery, который я делаю на его «открытом» методе, вместо этого отправляет весь HTML перед jtable.

Кроме того, я наблюдал сильно связанную проблему, Если я сначала щелкнув delete, а затем нажмите кнопку «Редактировать», он откроет форму для удаления и добавит форму редактирования друг на друга.

Прикрепленные изображения (При нажатии Delete после редактирования) диалогового окна

enter image description here

Редактирование открывается даже я нажал строку JTable и не нажав на иконку удаления на JTable Колонка удаления. enter image description here

Это весь мой код:

<div id="PersonTableContainer"></div> 
<script type="text/javascript"> 
var rowID; 
var retEditDialogDiv; 

$("#dialogEdit-form").dialog(
    { 
     autoOpen: false, 
     title: "Edit Person", 
     height: 380, 
     width: 600, 
     show: { effect: 'fold', direction: "up" }, 
     modal: true, 

     open: function (event, ui) { 
      var ID = rowID; 
      $(this).load("Person/Edit", { a_id: rowID }); 
     }, 
     buttons: 
     { 
      "Cancel": function() { 
       $("#dialogEdit-form").dialog('close'); 
      }, 

      "Save": function() { 
       $("#update-message").html(''); //make sure there is nothing on the message before we continue 

       $("#UpdatePersonForm").submit(); 
       $("#dialogEdit-form").dialog('close'); 
      } 
     } 
    }); 
//}//end of ready 
$(document).ready(function() { 
    $('#PersonTableContainer').jtable(
     { 

      title: 'Person List', 
      paging: true, //Enable paging 
      sorting: true, //Enable sorting 
      defaultSorting: 'Name ASC', 
      selecting: true, 
      addNewRecord: false, 
      addRecordButton: false, 
      showCloseButton: true, 

      multiselect: true, //Allow multiple selecting 
      selectingCheckboxes: true, //Show checkboxes on first column 
      selectOnRowClick: false, //Enable this to only select using checkboxes 

      actions: 
      { 
       listAction: '@Url.Action("GetPersons")' 
      }, 
      toolbar: 
      { 
       hoverAnimation: true, //Enable/disable small animation on mouse hover to a toolbar item. 
       hoverAnimationDuration: 60, //Duration of the hover animation. 
       hoverAnimationEasing: undefined, //Easing of the hover animation. Uses jQuery's default animation ('swing') if set to undefined. 

       items: 
       [{ 
        icon: '/Content/images/Misc/addRecordButton.png', 
        text: 'Add new record', 

        click: function() { 
         $("#dialog-form").dialog("open"); 
        } 
       }] 
      }, 
      fields: 
      { 
       PersonId: 
       { 
        key: true, 
        create: false, 
        edit: false, 
        list: false 
       }, 

       FirstName: 
       { 
        title: 'First Name', 
        width: '15%', 
        sorting: true, 
        selecting: true, 
       }, 
       LastName: 
       { 
        title: 'Last Name', 
        width: '15%', 
        sorting: true, 
        selecting: true, 
       }, 
       Email: 
       { 
        title: 'Email Address', 
        width: '20%', 
        list: true, 
        sorting: true, 
        selecting: true, 
       }, 
       DOB: 
       { 
        title: 'DOB', 
        width: '15%', 
        type: 'date', 
        displayFormat: 'yy-mm-dd', 
        visibility: 'hidden', 
        list: false, 
        selecting: true 
       }, 
       Title: 
       { 
        title: 'Title', 
        width: '15%', 
        list: true, 
        sorting: true, 
        selecting: true, 

       }, 
       Password: 
       { 
        Password: 'Password', 
        width: '12%', 
        visibility: 'hidden', 
        list: false 
       }, 
       Institute: 
       { 
        title: 'Institute', 
        width: '10%', 
        create: true, 
        edit: true, 
        sorting: true,//This column is not sortable! 
        list: true, 
        selecting: true, 
       }, 
       Roles: 
       { 

        title: 'Role', 
        width: '10%', 
        options: '@Url.Action("GetRoles")', 
        defaultValue: 'Professors/User', 
        create: true, 
        edit: true, 
        sorting: true,//This column is not sortable! 
        list: true, 
        selecting: true, 
       }, 
       Edit: 
       { 
        title: '', 
        sorting: false, 
        edit: false, 
        create: false, 
        listClass: 'child-opener-image-column', 
        display: function (data) { 
         var $img = $('<img class="child-opener-image" src="/Content/images/Misc/editRecordButton.png" title="Edit record" />'); 

         //Open EditPerson Dialog Box when user clicked Edit 

         $img.click(function() { 
          $('.jtable-data-row').click(function() { 
           rowID = $(this).attr('data-record-key');  
           $("#dialogEdit-form").dialog("open"); 
          }); 
         }); 

         return $img; 
        } 
       }, 
       Delete: 
       { 
        title: '', 
        sorting: false, 
        edit: false, 
        create: false, 
        listClass: 'child-opener-image-column', 
        display: function (data) { 
         var $img = $('<img class="child-opener-image" src="/Content/images/Misc/deleteRecord_Simple.png" title="Delete record" />'); 

         //Open DeletePerson Dialog Box when user clicked Delete 

         $img.click(function() { 
          $('.jtable-data-row').click(function() { 
           rowID = $(this).attr('data-record-key'); 
           $("#dialog-confirm").dialog("open"); 
          }); 
         }); 

         return $img; 
        } 
       } 
      } 
     }); 

    $('#PersonTableContainer').jtable('load'); 
    $('#PersonTableContainer').css("float", "left").width(1200).css('margin-left', '-20px'); 
}); 

$("#dialog-form").dialog(
    { 
     autoOpen: false, 
     title: "Create Person", 
     height: 380, 
     width: 600, 
     show: { effect: 'fold', direction: "up" }, 
     modal: true, 

     open: function (event, ui) { 
      $(this).load("@Url.Action("Create")"); 
     }, 
     buttons: 
     { 
      "Cancel": function() { 
       $("#dialog-form").dialog("close"); 
      }, 

      "Save": function() { 
       $("#update-message").html(''); //make sure there is nothing on the message before we continue 

       $("#createPersonForm").submit(); 
       $("#dialog-form").dialog('destroy'); 

      } 
     } 
    }); 
$("#dialog-confirm").dialog(
    { 
     autoOpen: false, 
     title: "Delete Person", 
     height: 180, 
     width: 380, 
     show: { effect: 'fold', direction: "up" }, 
     modal: true, 
     buttons: 
     { 
      "Cancel": function() { 
       $(this).dialog('destroy'); 
      }, 
      "Delete": function() { 
       $("#update-message").html(''); //make sure there is nothing on the message before we continue 
       $("#dialog-confirm").dialog('close'); 


       $.ajax({ 
        type: "POST", 
        url: "Person/DeletePerson", 
        data: { PersonId: rowID }, 
        success: PersonDeleted 
       }); 
      } 
     } 
    }); 
function PersonDeleted(result) { 
    $('.alert-box').html("Person Deleted"); 
    $('.alert-box').css("display:Block"); 
    $('.alert-box').css("float", "left").width(1130).css('margin-left', '-20px'); 
    $('.alert-box').delay(400).slideDown(400).delay(1000).slideUp(400); 

    $('#PersonTableContainer').jtable('load'); 
} 
</script> 

Если кто-то сталкивается с теми же вопрос и решить, или может помочь мне. Я был бы очень обязан.

Заранее спасибо. С уважением, Usman

ответ

0

Я выясняю сам. Я применил hide() с close() вложенным способом. Более того, комментарии пользователя88243 помогли мне больше. Я применил return false, немедленно открыв диалог, и это сработало для меня.

Jquery Dialog - div disappears after initialization

С наилучшими пожеланиями Усман

Смежные вопросы