通过Javascript验证消息

本文关键字:消息 验证 Javascript 通过 | 更新日期: 2023-09-27 18:29:33

我有一个问题。选中复选框时如何禁用验证。我试过ValidatorEnable(control,false),它对我不起作用。

<dxe:BaseCheckBox runat ="server" ID="chkIsChecked" ClientInstanceName ="chkIsChecked">
       <ClientSideEvents CheckedChanged="OnSelectionChanged"/>
</dxe:BaseCheckBox>

<dxe:BaseComboBox runat ="server" ID="cboLabour" ClientInstanceName ="cboLabour" ValueType="System.String" ClientEnabled="false"  >
     <ValidationSettings SetFocusOnError="True" ErrorText="This field is required to fill."
       ErrorDisplayMode="ImageWithTooltip" ValidationGroup="RejectReason"   
       CausesValidation="false">
          <RequiredField IsRequired="True" ErrorText="This field is required to fill.">
          </RequiredField>
     </ValidationSettings>
</dxe:BaseComboBox>

我的Javascript:

function OnSelectionChanged(s,e)
{
    if(chkIsChecked.GetValue())
    {
        cboLabour.SetEnabled(true);
    }
    else
    {      
        cboLabour.SetEnabled(false);
        cboLabour.SetValue('');
    }
}

谢谢你的建议。

通过Javascript验证消息

要做到这一点,您需要使用自定义验证。类似这样的东西:
function OnLabouryValidation(s, e) {
     if (chkIsChecked.GetValue())
         return;
     var v = e.value;
     if(e.value)
          return;
    e.isValid = false;
    e.errorText = "Required.";
}

这里有关于自定义验证的"文档",但在我的快速阅读中,还不清楚如何将其连接起来。

http://documentation.devexpress.com/#AspNet/CustomDocument11135

正如我从您的问题中发现的那样,您正在寻找组验证:

首先在ValidationSettings中设置ValidateOnLeave="False",并为控件指定验证组名称,然后使用客户端ASPxClientEdit.ValidateGroup('MyGroup');方法根据您的要求进行一些自定义来验证您的控件组。

标记:

 <dxe:BaseCheckBox runat ="server" ID="chkIsChecked" ClientInstanceName ="chkIsChecked">
           <ClientSideEvents CheckedChanged="OnSelectionChanged"/>
    </dxe:BaseCheckBox>

    <dxe:BaseComboBox runat ="server" ID="cboLabour" ClientInstanceName ="cboLabour" ValueType="System.String" ClientEnabled="false"  >
         <ValidationSettings SetFocusOnError="True" ErrorText="This field is required to fill."
           ErrorDisplayMode="ImageWithTooltip" ValidationGroup="RejectReason"   
          ValidateOnLeave="False">
              <RequiredField IsRequired="True" ErrorText="This field is required to fill.">
              </RequiredField>
         </ValidationSettings>
    </dxe:BaseComboBox>

<dx:ASPxButton ID="btn" runat="server" Text="Validate" 
AutoPostBack="False" CausesValidation="False">
         <ClientSideEvents Click="function(s, e) {
    if (chkIsChecked.GetValue())  // if checked then validate the group
    {
              ASPxClientEdit.ValidateGroup('RejectReason');
    }
         }" />
    </dx:ASPxButton>

遵循这些文档并实现您尝试执行的任何操作。
如何:验证一组编辑器
如何:验证页面上的所有编辑器
如何:实施自定义验证
ASPxClientEdit。Validation Event