<li>
        <label>Chapter Title</label>
        <input type="text" name="chapter[1][title]" />
    </li>

    <li>    
        <label>Text</label>
        <textarea name="chapter[1][text]" ></textarea>
    </li>
    <li>
        <input type="file" name="image2" id="image2" />
        <img id="thumb2" width="100px" height="100px"/>
        <input type="hidden" id="image_src2" name="chapter[1][photo]" />
    </li>

    <li id="caption2" style="display:none;">
        <label>Photo Caption</label>
        <input type="text" name="chapter[1][photo_caption]" />
    </li>    

Поля формы и код javascript создаются динамически.

var thumb = $('img#thumb2'); 
    new AjaxUpload('image2', {
        action: "action",
        name: 'userfile',
        onSubmit: function(file, extension) {
            $('div.preview').addClass('loading');
        },
        onComplete: function(file, response) {
            thumb.load(function(){
                $('div.preview').removeClass('loading');
                thumb.unbind();
            });
            thumb.attr('src', response);
            $('#image_src2').val(response);
            $('#image_src2').live('change',function()
            {
                $('#caption2').show(); // this does not work
            });
        }
    });     

Изображение загружается хорошо, и отображается эскиз, но поле заголовка не отображается и ошибки не отображаются.

0
Shoaib Iqbal 26 Авг 2011 в 08:54

3 ответа

Лучший ответ

Попробуй это:

$('#image_src2').val(response);
$('#caption2').show();
0
Sang Suantak 26 Авг 2011 в 05:02

Вы можете быть привязаны к обработчику change после изменения источника изображения в $('#image_src2').val(response)

0
Rolando Cruz 26 Авг 2011 в 04:58

Попробуйте использовать обратный вызов load: он сработает и отобразит изображение, когда оно будет полностью загружено.

    onComplete: function(file, response) {
        thumb.load(function(){
            $('div.preview').removeClass('loading');
            thumb.unbind();
        });
        thumb.attr('src', response);
        $('#image_src2').val(response);
        $('#image_src2').load(function()  // changed to "load"
        {
            $('#caption2').show();
        });
    }
0
Will 26 Авг 2011 в 05:02