我想写自己的表单验证javascript库,我一直在谷歌上查看如何检测是否点击了提交按钮,但我找到的只是代码,你必须onSubmit="function()"在html中使用onClick .
我想制作这个javascript,以便我不必触摸任何HTML代码,如添加onSubmit或onClick javascript.
在WPF中,您可以使用ExceptionValidationRule或在数据绑定期间根据数据层中抛出的错误设置验证DataErrorValidationRule.
假设你有一堆这样设置的控件,你有一个Save按钮.当用户单击"保存"按钮时,您需要确保在继续保存之前没有验证错误.如果存在验证错误,您希望对它们大声疾呼.
在WPF中,如何确定是否有任何数据绑定控件设置了验证错误?
在C#中是否有一种方法可以查看字符串是否为Base 64编码,而不仅仅是尝试转换它并查看是否存在错误?我有这样的代码:
// Convert base64-encoded hash value into a byte array.
byte[] HashBytes = Convert.FromBase64String(Value);
Run Code Online (Sandbox Code Playgroud)
我想避免如果该值不是有效的base 64字符串,则会出现"Base-64字符串中的无效字符"异常.我想检查并返回false而不是处理异常,因为我希望有时这个值不会是一个基本的64字符串.在使用Convert.FromBase64String函数之前有没有办法检查?
谢谢!
更新:
感谢您的所有答案.这是一个你可以使用的扩展方法到目前为止似乎确保你的字符串将传递Convert.FromBase64String而没有异常.当转换为base 64时,.NET似乎忽略所有尾随和结尾空格,因此"1234"有效,因此"1234"
public static bool IsBase64String(this string s)
{
s = s.Trim();
return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
}
Run Code Online (Sandbox Code Playgroud)
对于那些对测试性能与捕获和异常感到疑惑的人来说,在大多数情况下对于这个基础64事物来说,检查比捕获异常直到达到一定长度更快.它的长度越小越快
在我非常不科学的测试中:对于字符长度100,000 - 110000的10000次迭代,它首先测试快了2.7倍.
对于字符长度为1至16个字符的1000次迭代,总共16,000次测试,它的速度提高了10.9倍.
我确信有一点可以用基于异常的方法进行测试.我只是不知道那是什么意思.
有什么好方法可以克服这段代码不能按预期工作的不幸事实:
<div class="required">
<label>Name:</label>
<input type="text">
</div>
<style>
.required input:after { content:"*"; }
</style>
Run Code Online (Sandbox Code Playgroud)
在一个完美的世界中,所有必需的inputs都会得到一个小星号,表明该字段是必需的.这个解决方案是不可能的,因为CSS是在元素内容之后插入的,而不是在元素本身之后插入,但类似的东西是理想的.在一个包含数千个必填字段的网站上,我可以在输入前移动星号,只需更改一行(:after到:before)或我可以将其移动到标签的末尾(.required label:after)或标签的前面,或者包装盒等位置......
这一点非常重要,不仅仅是因为我改变了我的想法,无论在哪里放置星号,还要考虑表格布局不允许星号位于标准位置的奇怪情况.它也适用于检查表单或突出显示不正确完成的控件的验证.
最后,它不会添加额外的标记.
是否有任何好的解决方案具有不可能代码的全部或大部分优势?
我怀疑我是唯一提出这个解决方案的人,但是如果你有更好的解决方案,请在这里发布.我只想在这里留下这个问题,以便我和其他人可以在以后搜索.
我需要判断是否在文本框中输入了有效日期,这是我提出的代码.当焦点离开文本框时我会触发它.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
Run Code Online (Sandbox Code Playgroud) rails是否有像validates_numericality_ofboolean 那样的验证器,还是需要自己滚动?
我怎样才能获得一个领域的"真实"价值<input type="number">?
我有一个input盒子,我正在使用更新的HTML5输入类型number:
<input id="edQuantity" type="number">
Run Code Online (Sandbox Code Playgroud)
这主要在Chrome 29中受支持:

我现在需要的是能够读取用户在输入框中输入的"原始"值.如果用户输入了一个数字:

然后edQuantity.value = 4,一切都很好.
但是如果用户输入了无效文本,我想将输入框的颜色设置为红色:

不幸的是,对于type="number"输入框,如果文本框中的值不是数字,则value返回空字符串:
edQuantity.value = "" (String);
Run Code Online (Sandbox Code Playgroud)
(至少在Chrome 29中)
如何获得控件的"原始"值<input type="number">?
我试着浏览Chrome的输入框的其他属性列表:

我没有看到任何类似于实际输入的东西.
我也找不到方法来判断盒子是否"空".也许我可以推断:
value isEmpty Conclusion
============= ============= ================
"4" false valid number
"" true empty box; not a problem
"" false invalid text; color it red
Run Code Online (Sandbox Code Playgroud)
注意:您可以忽略水平规则后的所有内容; 它只是填充物来证明这个问题.另外:不要将示例与问题混淆.人们可能要回答这个问题的原因其他比着色盒红(一个例子:转换文本"four"成拉丁"4"onblur事件中的符号) …
我已经对此做了一些搜索,并且我找到了几个部分答案,但是没有什么能让我感到温暖模糊"这是正确的方法".要回答针对此问题的最常见投诉:"复选框可以有两个合法状态 - 已选中和未选中",这是"我接受条款和条件..."复选框,必须选中该复选框才能完成注册,因此,从业务逻辑的角度来看,需要检查该框.
请提供完整的cut-n-paste ready代码片段与您的回复!我知道有几个部分 - CustomValidator(大概),代码隐藏,一些javascript和可能的IsValid检查,对我来说令人沮丧的部分是在我看过的每个例子中,其中一个是关键的件丢失了!
我使用的是与metaHTML5 Boilerplate 相同的,W3C HTML验证器抱怨:
错误值X-UA-兼容元素元素属性http-equiv.
Run Code Online (Sandbox Code Playgroud)<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
这个meta标签有什么问题?
我似乎无法找到区分这三个注释之间差异的摘要.