jQWidgets Forums

jQuery UI Widgets Forums Dialogs and Notifications Window function is called twice Reply To: function is called twice

function is called twice #68260

Nadezhda
Participant

Hi cpuin,

1) If you want to re-open addDialog with empty fields you should clear their content when click on button with id “cancelButton”. Here is an example how to achieve it for the first input field:

$("#cancelButton").mousedown(function () {
    // close jqxWindow.
    $("#addDialog").jqxWindow('close');
    $('#invCompany').val('');
});

2) In the following example there is not such an issue.

<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
    <link rel="stylesheet" href="../../jqwidgets/styles/jqx.summer.css" type="text/css" />
    <script type="text/javascript" src="../../scripts/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxwindow.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxdatetimeinput.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxcalendar.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/globalization/globalize.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxinput.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxdata.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxdropdownlist.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxlistbox.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxdatatable.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxscrollbar.js"></script>
    <script type="text/javascript" src="../../../jqwidgets/jqxdata.export.js"></script>
    <script type="text/javascript">
        // SAVE INVOICE --------------------------------------------------------------------------------------
        function saveInvoice(rowData) {
            var data = "insert=true&" + $.param(rowData);
            $.ajax({
                dataType: 'json',
                url: "../sampledata/beverages.txt",
                cache: false,
                data: data,
                success: function (data, status, xhr) {
                    //command is executed
                    $("#addDialog").jqxWindow('close');
                    //create confirmation modal dialog
                    $('#eventWindow').jqxWindow({
                        maxHeight: 150, maxWidth: 280, minHeight: 30, minWidth: 250, height: 145, width: 270,
                        resizable: false, isModal: true, modalOpacity: 0.3,
                        okButton: $('#ok'), cancelButton: $('#cancel'),
                        initContent: function () {
                            $('#ok').jqxButton({ width: '65px' });
                            $('#cancel').jqxButton({ width: '65px' });
                            $('#ok').focus();
                        }
                    });

                    $("#eventWindow").jqxWindow('open');
                    $("#eventWindow").css('visibility', 'inherit');
                    $("#ok").mousedown(function () {
                        $("#eventWindow").jqxWindow('close');
                        //print PDF
                        var saleNumber = $("#invAcct").val();
                        var url = "invoiceen.php?saleNumber=" + saleNumber;
                        var url= "../sampledata/beverages.txt" + saleNumber;
                    });
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    //command has failed on execution
                    alert(errorThrown);
                }
            });
        }

        // CREATE TABLE ------------------------------------------------------------------------------------			
        function createTable() {
            var source =
                        {
                            datatype: "json",
                            datafields: [
                                { name: 'ID', type: 'int' },
                                { name: 'Acct', type: 'int' },
                                { name: 'PartnerID', type: 'string' },
                                { name: 'ObjectID', type: 'string' },
                                { name: 'Date', type: 'string' }
                            ],
                            url: url,
                            cache: false,
                            addRow: function (rowID, rowData, position, commit) {
                                var data = "insert=true&" + $.param(rowData);
                                $.ajax({
                                    dataType: 'json',
                                    url: "../sampledata/beverages.txt",
                                    cache: false,
                                    data: data,
                                    success: function (data, status, xhr) {
                                        // update command is executed.
                                        commit(true);
                                    },
                                    error: function (jqXHR, textStatus, errorThrown) {
                                        commit(false);
                                        alert(errorThrown);
                                    }
                                });
                            },
                            updateRow: function (rowID, rowData, commit) {
                                var data = "" + $.param(rowData);
                                $.ajax({
                                    dataType: 'json',
                                    url: '',
                                    cache: false,
                                    data: data,
                                    success: function (data, status, xhr) {
                                        // update command is executed.
                                        commit(true);
                                    },
                                    error: function (jqXHR, textStatus, errorThrown) {
                                        commit(false);
                                        alert('Does not work :( ');
                                    }
                                });
                            },
                            deleteRow: function (rowID, commit) {
                                // synchronize with the server - send delete command
                                // call commit with parameter true if the synchronization with the server is successful 
                                // and with parameter false if the synchronization failed.
                                commit(true);
                            }
                        };

            var dataAdapter = new $.jqx.dataAdapter(source);

            $("#dataTable").jqxDataTable(
            {
                width: 750,
                pageable: true,
                pagerButtonsCount: 10,
                source: dataAdapter,
                sortable: true,
                columnsResize: false,
                altRows: true,
                showAggregates: false,
                aggregatesHeight: 60,
                columns: [
                    { text: 'Продажба', dataField: 'Acct', width: 100 },
                    { text: 'Обект:', dataField: 'ObjectID', cellsFormat: 'f', width: 150 },
                    { text: 'Партньор:', dataField: 'PartnerID', width: 250 },
                    { text: 'Дата:', dataField: 'Date', width: 150 }
                ]
            });
        }
        // END CREATE TABLE ----------------------------------------------------------------------------------	  
        //END-----------------------------------------------------------------------------------------------	

        $(document).ready(function () {
            $("#startDate").jqxDateTimeInput({ width: '100px', height: '25px', formatString: "yyyy-MM-dd" });
            $("#endDate").jqxDateTimeInput({ width: '100px', height: '25px', formatString: "yyyy-MM-dd" });
            $("#submitButton").jqxButton({ width: '100px', height: '25px' });
            $("#submitButton").mousedown(function () {
                var start = $('#startDate').val();
                var end = $('#endDate').val();
                //check which arguments are selected
                url = "../sampledata/beverages.txt?salesforinvoice=true&" + "startDate=" + start + "&endDate=" + end;
                createTable();
            });
            $("#excelExport").jqxButton();
            $("#xmlExport").jqxButton();
            $("#csvExport").jqxButton();
            $("#tsvExport").jqxButton();
            $("#htmlExport").jqxButton();
            $("#jsonExport").jqxButton();
            $("#excelExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'xls');
            });
            $("#xmlExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'xml');
            });
            $("#csvExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'csv');
            });
            $("#tsvExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'tsv');
            });
            $("#htmlExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'html');
            });
            $("#jsonExport").click(function () {
                $("#dataTable").jqxDataTable('exportData', 'json');
            });

            $("#printButton").jqxButton({ width: 80 });

            $("#printButton").click(function () {
                var gridContent = $("#dataTable").jqxDataTable('exportData', 'html');
                var newWindow = window.open('', '', 'width=800, height=500'),
                document = newWindow.document.open(),
                pageContent =
                    '<!DOCTYPE html>' +
                    '<html>' +
                    '<head>' +
                    '<meta charset="utf-8" />' +
                    '<title>jQWidgets DataTable</title>' +
                    '</head>' +
                    '<body>' + gridContent + '</body></html>';
                document.write(pageContent);
                document.close();
                newWindow.print();
            });
            //ADD DIALOG -----------------------------------------------------------------------------------------   
            $("#addDialog").jqxWindow({
                resizable: true,
                isModal: true,
                position: { left: $("#dataTable").offset().left + 400, top: $("#dataTable").offset().top + 35 },
                width: 500, height: 360,
                autoOpen: false
            });

            $("#invCompany").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#invDate").jqxDateTimeInput({ width: '100px', height: '25px', formatString: "yyyy-MM-dd" });
            $("#invAcct").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#invRecipient").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#invIDCard").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#invPublisher").jqxInput({ height: 25, width: 350, minLength: 1 });

            var payments = [
                            { id: 1, title: "В брой" },
                            { id: 2, title: "По банков път" },
                            { id: 3, title: "С карта" },
                            { id: 4, title: "С ваучер" }
            ];
            var source =
                           {
                               localdata: payments,
                               datatype: 'array',
                               datafields: [
                                   { name: 'id' },
                                   { name: 'title' }
                               ]
                           };
            var dataAdapter = new $.jqx.dataAdapter(source);
            $("#invPayment").jqxDropDownList({ source: dataAdapter, selectedIndex: 0, displayMember: "title", valueMember: "id", width: '150', height: '25' });
            $("#invOsnovanie").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#invOpisanie").jqxInput({ height: 25, width: 350, minLength: 1 });
            $("#cancelButton").jqxButton({ height: 25, width: 80 });
            $("#cancelButton").mousedown(function () {
                // close jqxWindow.
                $("#addDialog").jqxWindow('close');
                $('#invCompany').val('');
            });
            $("#saveButton").jqxButton({ height: 25, width: 80 });
            $("#saveButton").mousedown(function () {
                // update edited row.     
                var row = parseInt($("#addDialog").attr('data-row'));
                var rowData = {
                    Acct: $("#invAcct").val(),
                    Date: $("#invDate").val(),
                    Recipient: $("#invRecipient").val(),
                    IDCard: $("#invIDCard").val(),
                    Publisher: $("#invPublisher").val(),
                    Payment: $("#invPayment").val(),
                    Osnovanie: $("#invOsnovanie").val(),
                    Opisanie: $("#invOpisanie").val()
                };
                saveInvoice(rowData);
            });
            $("#addDialog").css('visibility', 'inherit');
            $("#addDialog").on('close', function () {
                // enable jqxDataTable.
                $("#dataTable").jqxDataTable({ disabled: false });
            });

            $("#dataTable").on('rowDoubleClick', function (event) {
                var args = event.args;
                var index = args.index;
                var row = args.row;
                // update the widgets inside jqxWindow.
                $("#addDialog").jqxWindow('setTitle', "Издаване на фактура към продажба номер: " + row.Acct);
                $("#addDialog").jqxWindow('open');
                $("#addDialog").attr('data-row', index);
                $("#dataTable").jqxDataTable({ disabled: true });
                $("#invAcct").val(row.Acct);
                $("#invCompany").val(row.PartnerID);
                $("#invDate").val(row.Date);
                $("#invAcct").val(row.Acct);
            });
        });
    </script>
</head>
<body>
    <div style='margin-top: 20px;'>
        <div style='float: left;' id="startDate" type="date" name="startdate"></div>
        <div style='float: left;' id="endDate" type="date" name="endDate" />
    </div>
    <input type="button" value="Изпрати" id='submitButton' />
    <br />
    <div id="dataTable"></div>
    <div style='margin-top: 20px;'>
        <div style='float: left;'>
            <input type="button" value="Export to Excel" id='excelExport' />
            <br />
            <br />
            <input type="button" value="Export to XML" id='xmlExport' />
        </div>
        <div style='margin-left: 10px; float: left;'>
            <input type="button" value="Export to CSV" id='csvExport' />
            <br />
            <br />
            <input type="button" value="Export to TSV" id='tsvExport' />
        </div>
        <div style='margin-left: 10px; float: left;'>
            <input type="button" value="Export to HTML" id='htmlExport' />
            <br />
            <br />
            <input type="button" value="Export to JSON" id='jsonExport' />
        </div>
    </div>
    <div style='margin-top: 20px;'>
        <div style='margin-left: 10px; float: left;'>
            <input type="button" value="Print" id='printButton' />
        </div>
    </div>
    <div style="visibility: hidden;" id="addDialog">
        <div></div>
        <div style="overflow: hidden;">
            <table>
                <tr>
                    <td>Партньор:</td>
                    <td>
                        <input type="text" id='invCompany' name='invCompany' /></td>
                </tr>
                <tr>
                    <td>Дата:</td>
                    <td>
                        <div id="invDate" type="date" name="invDate"></div>
                        <input id="invAcct" type="number" name="invAcct" hidden="false" /></td>
                </tr>
                <tr>
                    <td>Получател:</td>
                    <td>
                        <input id="invRecipient" type="text" name="invRecipient" value="" /></td>
                </tr>
                <tr>
                    <td>ЕГН/Лична карта:</td>
                    <td>
                        <input id="invIDCard" type="text" name="invRecipient" value="" /></td>
                </tr>
                <tr>
                    <td>Издал документа:</td>
                    <td>
                        <input id="invPublisher" type="text" name="invRecipient" value="" /></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <br>
                    </td>
                </tr>
                <tr>
                    <td>Начин на плащане:</td>
                    <td>
                        <div id="invPayment"></div>
                    </td>
                </tr>
                <tr>
                    <td>Основание:</td>
                    <td>
                        <input id="invOsnovanie" type="text" name="invRecipient" value="" /></td>
                </tr>
                <tr>
                    <td>Описание:</td>
                    <td>
                        <input id="invOpisanie" type="text" name="invRecipient" value="" /></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <br>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td>
                        <button id="saveButton">Запази</button>
                        <button style="margin-left: 5px;" id="cancelButton">Откажи</button></td>
                </tr>
            </table>
        </div>
    </div>
    <div id="eventWindow" style="visibility: hidden;">
        <div></div>
        <div>
            Фактурата е запазена!<br>
            Искате ли да генерирате PDF?	                         
	    <div style="float: right; margin-top: 15px;">
            <button id="ok" style="margin-right: 10px">Да</button>
            <input type="button" id="cancel" value="Отказ" />
        </div>
        </div>
    </div>
</body>
</html>

Best Regards,
Nadezhda

jQWidgets team
http://www.jqwidgets.com/