Как передать параметр в функцию кнопки диалога пользовательского интерфейса jquery в расширенной функции? - PullRequest
2 голосов
/ 15 февраля 2012

Я хотел бы создать всплывающее окно с диалоговым окном 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?

1 Ответ

3 голосов
/ 15 февраля 2012

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

Оберните вызов onClick в анонимную функцию, чтобы вы могли вызывать метод, передавая нужные параметры:

$(div_id)
    .dialog('addbutton', 'Save', function() {
        onclick(recordtype, recordid);
    });
...