...使用 jquery/javascript?我想检查并确保输入了一个值并且它是一个数字。
首先 - 在客户端、服务器端或两者上进行验证是最佳实践吗?这是应该验证两次还是在客户端检查足够?
第二 - 如果客户端验证是解决这个问题的最佳方式,我怎么能用 javascript/jquery 做到这一点?我假设对于单击的按钮,我会将其分配onclientclick
给一个 javascript 函数。
...使用 jquery/javascript?我想检查并确保输入了一个值并且它是一个数字。
首先 - 在客户端、服务器端或两者上进行验证是最佳实践吗?这是应该验证两次还是在客户端检查足够?
第二 - 如果客户端验证是解决这个问题的最佳方式,我怎么能用 javascript/jquery 做到这一点?我假设对于单击的按钮,我会将其分配onclientclick
给一个 javascript 函数。
1) 验证应至少在服务器端完成。两者都更好。
2)如果您想进行简单的验证,您只需附加到按钮单击事件,或者更好的是,表单提交事件。
$('form').submit(function()
{
// Do My Validation
// return false if invalid, true otherwise
});
您需要两者都做,并且您应该在客户端使用jQuery Validate。
客户端验证纯粹是为了方便用户和服务器,而不是为了数据卫生。考虑一下您可以随时打开您的开发工具并更改 JS 的事实——您可以完全绕过客户端验证。但是,它不需要您加载更多数据并允许您在导航之前进行验证,这很好。
就像其他答案所说,最好同时使用服务器端和客户端。知道自己在做什么的人总是可以通过客户端。即使有人完全关闭 Javascript,客户端验证也是毫无价值的。
我的建议是在服务器上设置所有内容,然后返回并为客户端修复它。Javascript 和 jQuery 是最常用的验证项。我在 Javascript 中使用的一件事是阻止任何提交按钮,直到所有内容都检查完毕,例如:
document.getElementById("submitbutton").innerHTML = '<input type="submit" value="Log In" />';
在通过验证检查完所有内容后将其放入会将输入按钮放置在 id 为“submitbutton”的 div 中。
一些 Javascript 的示例只是为了确保输入框是这样的:
var textValue = document.getElementById("idOfTextBox").value;
if(textValue == null || textvalue == "")
{
document.getElementById("errordiv").innerHTML = "Please fill out a value for the text box";
}
如果为每个文本框设置了 onKeyUp 或 onBlur,那么它在确保每个框都有其输入方面非常有用。
这里的客户端验证很少
首先 - 在客户端、服务器端或两者上进行验证是最佳实践吗?这是应该验证两次还是在客户端检查足够?
Client Side
- 总是好的。前提是 JavaScript 未被阻止。客户端验证加快了流程。减少执行时间。Server Side
- 它总是不费吹灰之力。只需要在性能上妥协。Both Side
- 我可以进行RegularExpressionValidator
服务器端验证。第二 - 如果客户端验证是解决这个问题的最佳方式,我怎么能用 javascript/jquery 做到这一点?我假设对于单击的按钮,我会将其 onclientclick 分配为等于 javascript 函数。
在这个例子中,我将解释我们如何防止用户在数字文本框中输入非字母。
<asp:TextBox ID="FirstName" runat="server" AutoComplete="Off"
onKeyup="return AlphaNumeric(this);" onchange="return AlphaNumeric(this);"></asp:TextBox>
<script language="javascript" type="text/javascript">
function AlphaNumeric(controlID) {
document.getElementById(controlID.id).value =
NumericValidation(document.getElementById(controlID.id).value);
return true;
}
function NumericValidation(val) {
var Reg = new RegExp('[^a-zA-Z]+');
var Result = val.match(Reg);
if (Result) {
val = val.replace(Reg, '');
return val;
}
else
return val;
}
</script>