заполнить модальную форму с помощью JSON - PullRequest
1 голос
/ 31 декабря 2010

У меня есть модальная форма, которую я создал так:

    function addeditNote(rowID,callback) {
        var ret;
        jQuery.fancybox({
            modal : true,
            overlayOpacity : 0.25,
            content : "<div class=\"contentbox modal-window modal-400\"><div class=\"boxbody\"><div class=\"boxheader clear\"><h2>Add / Edit User Notes</h2></div><br /><div class=\"box-wrap clear\"><form action=\"\" method=\"post\" class=\"form bt-space0\"><div class=\"columns clear bt-space0\"><div class=\"colText fl\"><div class=\"form-field clear\"><label for=\"textfield\" class=\"formlabel size-20 fl-space2\">Name: </label><input type=\"text\" id=\"name\" class=\"text fl-space2\" /></div><div class=\"form-field clear\"><div class=\"fl-space2\"><label for=\"textarea\" class=\"formlabel size-20\">Notes: </label></div><textarea id=\"note\" class=\"form-textarea display\" cols=\"50\" rows=\"6\" name=\"form[note]\" rel=\"textarea\"></textarea></div></div></div><div class=\"columns clear bt-space5\"></div><div class=\"form-field clear\"><input id=\"addeditNote_cancel\" class=\"button fr-space2\" type=\"button\" value=\"Cancel\"><input id=\"addeditNote_ok\" class=\"button green fr-space\" type=\"button\" value=\"Enter\"></div></form></div><!-- end of box-wrap --></div> <!-- end of box-body --></div>",



            onComplete : function() {
                jQuery("#addeditNote_cancel").click(function() {
                    ret = false;
                    jQuery.fancybox.close();
                })
                jQuery("#addeditNote_ok").click(function() {
                    ret = true;
                    jQuery.fancybox.close();
                })
            },
            onClosed : function() {
                callback.call(this,ret);
            }
        });
}

Я получаю свою строку JSON, как:

$.getJSON("GetNotes.php?id=" + rowID,
    function(data) {
        $.each(data, function(i, item) {
            $('#' + item.field).val(item.value);
                 });
});

Что возвращает:

{"op": "UPDATE", "id": "7","name": "Joe Public","note": "Dennis likes his coffee in the morning... He doesn't drink tea and coffee always have powdered creamer and 2 sugar's." }

"op" просто заполнитель, так что я знаю, если заметка существует, я обновляю базу данных, а если ее нет, я вставляю ..

Моя проблема в том, что я не знаю, куда поместить это, чтобы заполнить форму ... Я все еще учусь, поэтому надеялся, что кто-нибудь сможет дать мне подсказку, как это работает ..:)

Спасибо! Деннис

1 Ответ

1 голос
/ 01 января 2011

Если не удается заполнить форму в той же функции, которая создает окно, попробуйте добавить его в качестве вызова в обработчике onComplete:

onComplete : function() {
    //All of your original code here
    $.getJSON( /* with your JSON code here */ );
},

Предположительно, диалог должен быть готов к этомувремя, и вы можете загружать вещи в элементы формы, как обычно.

...