嘿..我想将当前日期与用户输入的日期进行比较..但是,到目前为止,我遇到了错误..
我试过这样的事情:
<asp:TextBox id="txtDate1" runat="server" />
<asp:CompareValidator runat="server" ErrorMessage="The date must be greater than today"
ControlToValidate="txtDate1" type="date"
ValuetoCompare="DateTime.Today.ToShortDateString()" />
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,指出"" DateTime.Today.ToShortDateString()的ValueToCompare属性的值不能转换为类型'日期'我也尝试过ValueToCompare="DateTime.Now.Date()",我得到了相同的错误消息.
请帮助我,我非常感谢.
我键入一个密码,然后我在重复密码字段重复,但红色警报没有消失,当我点击提交按钮它是成功的,没有错误验证.重复密码时如何使比较警报消失?
这是模型中的规则代码
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],
['password', 'required'],
['password','compare'],
['password', 'string', 'min' => 6],
['password_repeat','safe']
];
}
Run Code Online (Sandbox Code Playgroud)
和我的形式
<?php $form = ActiveForm::begin(); ?>
<h3>Your Account</h3>
<?= $form->field($modelUser, …Run Code Online (Sandbox Code Playgroud) 众所周知,比较验证器可用于验证日期并根据运营商类型(<,<=,> =等)进行检查.我已将该cultureinvariantvalues="true"属性设置为验证两个包含日期的文本框控件.我必须约束它们,使得开始日期必须早于完成日期.当我输入如下所示的描述性日期时,验证似乎失败:
StartDate: Tuesday, 21 February 2012
FinishDate: Wednesday, 22 February 2012
Run Code Online (Sandbox Code Playgroud)
即使22nd大于21,验证也会失败.我使用的标记如下.如果由于任何原因你需要格式信息,这里是dddd, dd MMMM yyyy
<asp:CompareValidator id="cvtxtStartDate" runat="server"
controltocompare="txtFinishDate"
cultureinvariantvalues="true"
display="Dynamic"
enableclientscript="true"
controltovalidate="txtStartDate"
errormessage="Start date must be earlier than finish date"
type="Date"
setfocusonerror="true"
operator="LessThanEqual"
text="Start date must be earlier than finish date">
Run Code Online (Sandbox Code Playgroud) 如果我想验证文本框是否包含大于或等于零的整数.我是否需要使用TWO asp:CompareValidator控件:一个使用DataTypeCheck运算符,另一个使用GreaterThanEqual运算符?
或者数据类型操作符是多余的?我可以使用具有GreaterThanEqual运算符的单个验证器(并且类型设置为Integer)吗?
所以我一直在寻找,似乎无法找到类似的问题.
基本上,似乎使用CompareValidator没有一个不起作用RequiredFieldValidator.
<div class="control-group">
<label class="control-label" for="PositionName">
Password:</label>
<div class="controls">
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<%--<asp:RequiredFieldValidator ID="rvPassword" runat="server" ControlToValidate="txtPassword"
ErrorMessage="Please Enter Password" SetFocusOnError="True" ValidationGroup="1"
CssClass="error"></asp:RequiredFieldValidator>--%>
</div>
</div>
<div class="control-group">
<label class="control-label" for="PositionName">
Confirm Password:</label>
<div class="controls">
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqConPass" runat="server" ControlToValidate="txtConfirmPassword"
ErrorMessage="Please Enter Confirm Password" SetFocusOnError="True" ValidationGroup="1"
CssClass="error"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="compPassword" runat="server" ControlToValidate="txtConfirmPassword"
ControlToCompare="txtPassword" ErrorMessage="Password Mismatch" SetFocusOnError="True"
ValidationGroup="1" CssClass="error"></asp:CompareValidator>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
基本上,你可以看到我已经RequiredFieldValidator注释了传球和确认传球.当我这样做的时候,我只能提交一个值txtPassword textbox而且没有任何内容txtConfirmPassword textbox.
如果我取消注释,RequiredFieldValidators那么它应该进行比较.
如果它有帮助,我需要这样做的原因是因为我无法解密密码并使用当前密码自动填充文本框.因此,无论何时编辑用户,他们都需要每次输入一个新密码RequiredFieldValidator …
当我输入9:00进入Start控件,16:00进入Finish; 以下代码未通过验证.
有没有人知道我可以在没有日期的情况下使用ASP.NET验证器的方法?
Start <asp:TextBox ID="txtStart" runat="server" /> (hh:mm)
<br />
Finish <asp:TextBox ID="txtFinish" runat="server" /> (hh:mm)
<br />
<asp:CompareValidator
id="cpvFinish"
ControlToValidate="txtFinish"
ControlToCompare="txtStart"
Operator="GreaterThanEqual"
Type="Date"
Display="Static"
EnableClientScript="true"
ErrorMessage="Finish time must be later than the start time."
runat="server" />
Run Code Online (Sandbox Code Playgroud)
PS-我知道我可以轻松地使用CustomValidator,它似乎是这个验证器应该能够处理的东西.
我需要我的结束日期总是大于开始日期,我尝试使用CompareValidator进行验证.
代码如下:
我有一个文本框开始日期
<asp:TextBox ID="TxtStartDate"
runat="server" />
<asp:CalendarExtender Enabled="True"
ID="TxtStartDate_CalendarExtender"
TargetControlID="TxtStartDate"
runat="server" />
Run Code Online (Sandbox Code Playgroud)
另一个TextBox结束日期.
<asp:TextBox ID="TxtEndDate"
runat="server" />
<asp:CalendarExtender Enabled="True"
ID="TxtEndDate_CalendarExtender"
TargetControlID="TxtEndDate"
runat="server" />
<asp:CompareValidator ControlToCompare="TxtStartDate"
ControlToValidate="TxtEndDate"
Display="Dynamic"
ErrorMessage="CompareValidator"
ID="CompareValidator1"
Operator="GreaterThan"
Type="Date"
runat="server" />
Run Code Online (Sandbox Code Playgroud)
但比较字段验证器失效.
例如,当开始日期是2/04/2012并且结束日期是10/04/2012时,它将触发.
我在asp.net中用c#代码和一些jscript编写.
我正在使用CompareValidators和RegularExpressions来验证某些字段.除了一个问题,这工作正常.异常消息占用空间,这会扭曲表单的外观.除非他们确实需要显示,否则我不希望该消息占用任何空间.如果我发回帖子,我可以通过使其可见和不可见来处理它.但在这种情况下,我不知道如何处理它.
我有一个文本框和一个提交按钮.文本框是日期输入字段.
附加到它,我有一个比较验证器,类型设置为"日期".它确实验证并显示错误消息.
问题是,用户仍然可以点击提交按钮.我想阻止这一点.如果用户输入了类似03/hello/2011的内容,则他或她应该无法提交表单.
我怎么能做到这一点?
有任何想法吗?
谢谢,
贾森
asp.net ×7
validation ×5
c# ×3
.net ×1
asp.net-2.0 ×1
compare ×1
date ×1
javascript ×1
passwords ×1
regex ×1
submit ×1
textbox ×1
vb.net ×1
webforms ×1
yii2 ×1