【问题标题】:Stop RadioButtonList posback on client validation在客户端验证时停止 RadioButtonList 回发
【发布时间】:2018-12-18 02:08:57
【问题描述】:

如果出现错误,我正在尝试阻止单选按钮列表回发,但它仍会回发。不知道我做错了什么!更改选择时,我会检查下拉列表中的选择,如果未选择任何内容,则会显示错误(“请从下拉列表中选择 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;
});

我尝试对单选按钮列表使用“onChange”客户端事件,完全没有被点击。

【问题讨论】:

    标签: javascript asp.net radiobuttonlist


    【解决方案1】:

    你不能轻易做到这一点。 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>
    

    【讨论】:

    • 谢谢。这给了我一个想法(不确定是否正确),但我删除了 autopostback='true' 和 onselectedindechanged,如果它验证了我在客户端手动进行了回发。似乎(部分)工作,但不显示错误或清除单选按钮选择错误,因为单选按钮列表位于更新面板中:(。要更新更新面板,似乎我必须进行回发,即使出现错误,这违背了目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2015-08-07
    • 2016-08-14
    相关资源
    最近更新 更多