2012-02-15 2 views
2

Я хотел бы создать всплывающее окно с диалоговым окном jquery UI, параметр recordtype будет определять содержимое диалогового окна для загрузки и функцию, вызываемую при нажатии кнопки диалога.Как передать параметр функции jquery UI в расширенной функции?

function showPopup(div_id, w, h, title, recordtype, recordid) { 

    $(div_id).dialog({ 
     height: h, 
     width: w, 
     title: title, 
     modal: true, 
     autoOpen: true 

    }); 

    //----extend the ui feature----- 
    $.extend($.ui.dialog.prototype, { 
     'addbutton': function(buttonName, func) { 
      var buttons = this.element.dialog('option', 'buttons'); 
      buttons[buttonName] = func; 
      this.element.dialog('option', 'buttons', buttons); 
     } 
    }); 

    //----load content page------ 
    if (recordtype == 'research') { 
     $(div_id).load('ResearchContents.aspx?ID=' + recordid); 
     $(div_id).dialog('addbutton', 'Save', onclick); 
     $(div_id).dialog('addbutton', 'Delete', onclick); 
    } 
    else if (recordtype == 'course') { 
     $(div_id).load('CourseContents.aspx?ID=' + recordid); 
     $(div_id).dialog('addbutton', 'Create', onclick); 
     $(div_id).dialog('addbutton', 'Delete', onclick); 
    } 

} 

//-----How to pass parameters to onClick? ---------- 
function onclick(recordtype, recordid) { 
    if(recordtype=='research' && recordid==-1) 
     createResearch(); 
    else if(recordtype=='research' && recordid>-1) 
     updateResearch(); 
    else if(recordtype=='course' && recordid==-1) 
     createCourse(); 
    else if(recordtype=='course' && recordid>-1) 
     updateCourse(); 

} 

Мой вопрос в том, как передать параметры recordtype и recordid для функции onClick?

ответ

3

Если вы просто передадите подтверждение функции как обратный вызов, единственным параметром, который вы будете, является ony jquery pass при выполнении обработчика событий, который является объектом Event.

Wrap вызов «OnClick» в анонимную функцию, так что вы можете позвонить вам метод прохождения параметров, которые вы хотите:

$(div_id) 
    .dialog('addbutton', 'Save', function() { 
     onclick(recordtype, recordid); 
    }); 
Смежные вопросы