Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2012, 15:19
Интересующийся
Отправить личное сообщение для Reiter Посмотреть профиль Найти все сообщения от Reiter
 
Регистрация: 18.09.2010
Сообщений: 10

Как можно улучшить такой код?
Подскажите, пожалуйста, как можно улучшить JS код и оптимизировать его?

Данный код частично написан мною, частично взять из сэмплов. Если где-то я ошибаюсь, пожалуйста, поправьте меня

Описание:
Есть функция, которая отвечает за аплоад файлов с нескольких ajax-контролов. Здесь она просто грузит файлы в кэш, так как потом вернувшееся значение функции submitbutton_click() отправляется на сервер, и на каждом контроле выполняется метод, который аплоадит эти файлы в директорию, где находится сам проект.

Серверный код, написанный на C#. В первом методе, OnInit, аттрибут кнопки SubmitButton получается значение, являющееся результатом выполнения JS функции submitbutton_click().
Метод fileinput_FileUploaded отвечает за копирование заапложенных файлов по указанному пути (в данном случае, этим путем является директория где находится solution.
Код:
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            SubmitButton.Attributes["onclick"] = "return submitbutton_click()";

        }

        int uploadcount = 0;

        protected void fileinput_FileUploaded(object sender, UploaderEventArgs args)
        {
            uploadcount++;
            args.CopyTo("~/" + args.FileName);
        }
Здесь достаточно все просто. Есть две кнопки, в которые можем добавить файлы для загрузки. И после того как мы добавили необходимые файлы в нужные контролы, нажимаем кнопку SubmitButton, которая запускает код JS для аплоада.

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="Scriptmanager1" runat="server"></asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <table border="0" cellpadding="0" cellspacing="0" width="100%">
                        <tr valign="middle">
                            <td class='standardText'><asp:Label Visible="true" ID="label1" runat="server"></asp:Label></td>
                            <td class='standardText'><CuteWebUI:UploadAttachments runat="server" ManualStartUpload="true" ID="fileinput1"  
                                InsertText="Browse Files1" onfileuploaded="fileinput_FileUploaded"></CuteWebUI:UploadAttachments></td>
                        </tr>
                        <tr valign="middle">
                            <td class='standardText'><asp:Label Visible="true" ID="label2" runat="server"></asp:Label></td>
                            <td class='standardText'><CuteWebUI:UploadAttachments runat="server" ManualStartUpload="true" ID="fileinput2"  
                                InsertText="Browse Files2" onfileuploaded="fileinput_FileUploaded"></CuteWebUI:UploadAttachments></td>
                        </tr>
                        <p>
                            <asp:Button runat="server" ID="SubmitButton" Text="Submit"/>  
                        </p>  
                    </table>
                </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>


В этом JS скрипте, в uploadobj и uploadobj2 записываем значение ID двух контролов, и затем проверяем, если хотя бы в одном есть больше одного файла для записи, начинаем аплоадить их поочереди.

function submitbutton_click() {
            var submitbutton = document.getElementById('<%=SubmitButton.ClientID %>');
            var uploadobj = document.getElementById('<%=fileinput1.ClientID %>');
            var uploadobj2 = document.getElementById('<%=fileinput2.ClientID %>');
            if (!window.filesuploaded) {
                if (uploadobj.getqueuecount() > 0 || uploadobj2.getqueuecount() > 0) {

                    uploadobj.startupload();
                    uploadobj2.startupload();
                }
                return false;
            }
            window.filesuploaded = false;
            return true;
        }
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проще реализовать код 4el Элементы интерфейса 11 22.07.2012 00:05
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Как вывести переменную из javascript в html код? red-nicolas Элементы интерфейса 3 25.02.2012 12:27
как можно доотправить форму Артем125 AJAX и COMET 1 23.11.2011 20:22
Как еще можно уменшить код? DoubleShot jQuery 7 17.07.2011 13:31