ASP Button требуется два клика для отправки назад? - PullRequest
1 голос
/ 11 ноября 2011

Я работаю над страницей, которая позволит пользователю загружать фотографию с HTML-вводом:

<input id="fileUpload" runat="server" type="file"   style="visibility:hidden;" />

У меня есть hidden, потому что я хочу создать свой собственный элемент управления загрузкойиспользуя <img> для кнопки Обзор и используя Jquery для запуска события click элемента управления fileUpload:

<img id="btnBrowse" alt="Choose an photo to upload..." src="images/browse.gif" />

JS:

$("#btnBrowse").click(function () {

 $('input[type=file]').click();

});

Я использую <ASP:ImageButton> длякнопка Upload и <ASP:TextBox> для хранения текста выбранного файла.

Если я удаляю style="visibility:hidden;", все работает нормально.Но при этом, когда я нажимаю «Загрузить», файл элемента управления загрузкой файлов теряется, и страница не будет публиковаться, пока я не нажму «Загрузить» второй раз.

Я знаю, что это своего рода "взлом", но я не хочу использовать элемент управления <ASP:FileUpload>, потому что его нельзя настроить, и я не хочу беспокоиться о плагине Jquery, еслиЯ могу выполнить то, что мне нужно, без него.

Кто-нибудь испытал это или есть какие-либо идеи, как я мог бы выполнить эту работу, сохраняя style="visibility:hidden;" на месте?

Большое спасибо заранее!

РЕДАКТИРОВАТЬ:

Это на самом деле больше связано с моей пользовательской кнопкой "Обзор".Я использовал <img>, как отмечалось, и я пытался использовать <ASP:ImageButton>, но получил те же результаты.Каждый раз, когда я нажимаю свою пользовательскую кнопку «Обзор» (которая вызывает JS, чтобы нажать input type=file), после выбора файла моей кнопке «Загрузка» потребуется два щелчка (и первый щелчок стирает путь к файлу ввода (как он пытается опубликовать).назад)?

Есть мысли по этому поводу?

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

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

0 голосов
/ 24 февраля 2012

также, если у вас уже есть файл js, вы можете использовать следующее:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
         window.onload = func;
    }
    else {
        window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}
addLoadEvent(whatYouWantToInit);

var whatYouWantToInit_count = 0;
function whatYouWantToInit() {
    if (whatYouWantToInit_count) { return; } // Won't let this function execute twice.
        whatYouWantToInit_count++;
        if ($('yourButton') != null) {
            $('yourButton').onclick = yourButton_click; //the function you want your onclick event to fire.
        }
}
0 голосов
/ 11 ноября 2011

Чистый удар в темноте, попробуйте использовать display:none вместо visibility:hidden

...