Остановить обратную передачу RadioButtonList при проверке клиента - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь запретить отправку списка переключателей назад, если есть ошибка, но она все еще отправляет назад.Не уверен, что я делаю не так!Когда выбор изменяется, я проверяю выбор в раскрывающемся списке, и если ничего не выбрано, я отображаю ошибку («Пожалуйста, выберите бла из выпадающего списка») и возвращаю ложь.

<asp:RadioButtonList runat="server" 
    ID="rblCoverType" 
    ClientIDMode="Static" 
    DataSourceID="odsSwapTypes" 
    RepeatDirection="Horizontal" 
    RepeatLayout="Flow" 
    AutoPostBack="true" 
    DataTextField="SwapType" 
    DataValueField="SwapTypeID"
    OnSelectedIndexChanged="rblCoverType_SelectedIndexChanged">
</asp:RadioButtonList>
<span id="lblErrCoverType" class="field-validation-error pull-left" style="display: inline"></span>

$(document).on('change', '#rblCoverType', function () {
    debugger
    var isValid = true;

    // Check the value in drop down list
    var swapScheduleWeekStart = $("#ddlSwapSheduledWeeks option:selected").val().trim();

        if (swapScheduleWeekStart == "") {
            // Clear radio button list selection, display error
            $("#rblCoverType").prop('checked',false);
            $("#lblErrCoverType").val('Some error msg here');
            $("#lblErrCoverType").show();
            isValid = false;
    }
    return isValid;
});

Я пытался использовать »onChange "клиентское событие для списка радиокнопок, не получено вообще.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы не можете сделать это легко.Aspnet генерирует следующий html

<span id="rblCoverType">
    <input id="rblCoverType_0" type="radio" name="ctl00$mainContentPane$rblCoverType" value="Value 1" 
       onclick="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$mainContentPane$rblCoverType$rblCoverType_0\&#39;,\&#39;\&#39;)&#39;, 0)" />

Обратите внимание, что для события click установлено значение input inline.Так что если вы действительно хотите предотвратить это onclick, вам придется добавить и удалить его вручную.Мне может быть легче потерять OnSelectedIndexChanged и сделать все на стороне клиента.

<script>
    $(document).ready(function () {
        $("#rblCoverType input")[0].onclick = null;
        $("#rblCoverType input").click(function () {
            alert("Clicked");
        });
    });
</script>
...