【问题标题】:Required Field validator allows onclick function even if fields are not valid必填字段验证器允许 onclick 功能,即使字段无效
【发布时间】:2014-03-28 19:25:25
【问题描述】:

我的页面上需要字段验证器,但它们仍然允许按钮调用 java 脚本函数。例如,我可以添加文本并将其删除,验证器将显示错误。如果单击提交按钮,它仍然会执行 onclientclick 中的 javascript 函数。如何阻止它执行 onclientclick 中的功能?

按钮:

<asp:Button ID="formPost" text="Submit" class="btn btn-default" runat="server" CausesValidation="true" OnClientClick="return sendHPCIMsg();" />

注意:我无权编辑 sendHPCIMsg() 函数。

要验证的字段:

<div class="form-group col-small">
 <label class="col-sm-2 control-label">First Name: </label>
                                            <div class="col-sm-8">
                    <asp:TextBox ID="fNameTxt" runat="server" CssClass="input-small"></asp:TextBox>
                                                <asp:RequiredFieldValidator ID="RequiredFieldValidatorFname" ControlToValidate="fNameTxt" runat="server" ErrorMessage="First name is required" ValidationGroup="billing" ForeColor="Red"></asp:RequiredFieldValidator>
                                            </div>
                                        </div>

上面的字段也在 AJAX CollapsiblePanelExtender 中,所以这是我用来启用/禁用验证的 javascript(基于复选框):

<script>
        $('#SameBillingChkBx').bind('click', function (e)
        {
            if ($(this).is(':checked'))
            {
                $.each(Page_Validators, function (index, validator) {
                    if (validator.validationGroup == "billing") {

                        ValidatorEnable(validator, false);

                    }
                });
            }
        })
    </script>

【问题讨论】:

    标签: javascript jquery asp.net validation ajaxcontroltoolkit


    【解决方案1】:

    我想通了。我写了以下函数:

    function submitform()
    {
        if (!Page_IsValid) {
            return false;
        }
        return sendHPCIMsg();
    }
    

    然后我在点击事件中调用了它。

    <asp:Button ID="formPost" text="Submit" class="btn btn-default" runat="server" CausesValidation="true" OnClientClick="return submitform();" />
    

    感谢大家的帮助!

    【讨论】:

      【解决方案2】:

      添加:OnClientClick="if(Page_ClientValidate()) CloseDialog();"

      <asp:Button ID="formPost" text="Submit" class="btn btn-default" runat="server" CausesValidation="true" OnClientClick="if(Page_ClientValidate()) return sendHPCIMsg();" />
      

      【讨论】:

        【解决方案3】:

        添加内部函数

         var val = <%= RequiredFieldValidatorFname.ClientID %>;
          if (val.isvalid == false) {
           //Do something
         }
        

        这将禁用下一次点击的验证器

        【讨论】:

          猜你喜欢
          • 2017-08-15
          • 2013-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多