Prześlij działanie, które zostanie trafione dwukrotnie podczas korzystania z JQuery UI Dialog

Piszę aplikację ASP.NET MVC 4 za pomocą JQuery i bootstrap.

W mojej witrynie dostępna jest funkcjonalność modalnego okna dialogowego, która do niedawna działała bezproblemowo, gdy jeden z deweloperów wprowadził na stronie zmiany związane ze stylizacją.

Poniżej znajduje się kod, który napisałem w jednym z moich częściowych widoków, otwieram go w oknie dialogowym JQuery:

@using (Ajax.BeginForm("ChangeStatus",
    new AjaxOptions { UpdateTargetId = "AboutOrderContainer", HttpMethod = "POST" }))
{
    @Html.HiddenFor(m => m.OrderId)
    <table class="row-fluid">
        <tr>
            <td></td>
        </tr>
        <tr>
            <td>
                Comments&nbsp;(Optional):
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>
                @Html.TextAreaFor(m => m.Comments, new { @maxlength = 255, @rows=5 })
            </td>
        </tr>        
        <tr>
            <td>                
                <center>
                <input type="submit" title="OK" value="OK" class="btn" />
                    </center>
            </td>
        </tr>
    </table>        
}

Wcześniej działało to dobrze, ponieważ za każdym razem, gdy użytkownik naciska przycisk „OK”, wywoływana była akcja „ChangeStatus”, a widok był odświeżany.

Ale teraz, po tym, jak deweloper dokonał pewnych zmian, "ChangeStatus" zostaje trafiony dwukrotnie asynchronicznie, co powoduje błędy czasu wykonywania. Nie jestem pewien, co powoduje problem.

Poniżej znajdują się pliki skryptów ładowane podczas ładowania tego okna dialogowego:

ajax.dialog.custom.jsbootstrap.jsjquery-1.9.1.jsjquery-migrate-1.1.1.jsjquery-ui-1.10.2.jsjquery-unobtrusive-ajax.jsjquery.validate.jsjquery.validate.unobtrusive.jsmodernizr-2.5.3.jsonmediajquery.jsecommercesite-custom.js

Wszystkie pliki skryptów (z wyjątkiem ecommercesite-custom.js) są bibliotekami z JQuery i witrynami ładowania początkowego. Poniżej znajduje się kod pliku ecommercesite-custom.js:

$(document).ready(function () {

    $('input[class*=btn-submit]').click(function (event) {
        if (($(this).closest('form').valid())) {
            $(this).attr("disabled", true);
            $(this).closest('form').submit();
        }
        else {
            $(this).attr("disabled", false);
        }
    });

});

Nie jestem pewien, co tu jest nie tak. Próbowałem usunąć powyższy plik js (tj. Nr 11), ale to nie pomogło. Możesz więc zignorować wszelkie konsekwencje powyższego pliku, zastanawiając się nad rozwiązaniem.

Ktoś ma jakiś pomysł? Powtarzając, że ten sam kod działał bardzo dobrze, dopóki inny programista nie zmienił niektórych funkcji stylizacji.

questionAnswers(3)

yourAnswerToTheQuestion