在客户端验证上停止radiobuttonlist posback



我正在尝试防止单个按钮列表在有错误但仍然张贴后发布。不知道我在做什么错!当选择更改时,我在下拉列表中检查选择,如果没有选择,我会显示错误("请从下拉列表中选择blah")并返回false。

<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;
});

我尝试使用" on Change"客户端事件作为广播按钮列表,但根本没有被击中。

您不能轻松地执行此操作。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)" />

请注意,单击事件设置为input控件内联。因此,如果您真的想防止onclick,则必须手动添加和删除它。我可能会更容易丢失OnSelectedIndexChanged并做所有客户端。

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

最新更新