0

...使用 jquery/javascript?我想检查并确保输入了一个值并且它是一个数字。

首先 - 在客户端、服务器端或两者上进行验证是最佳实践吗?这是应该验证两次还是在客户端检查足够?

第二 - 如果客户端验证是解决这个问题的最佳方式,我怎么能用 javascript/jquery 做到这一点?我假设对于单击的按钮,我会将其分配onclientclick给一个 javascript 函数。

4

5 回答 5

4

1) 验证应至少在服务器端完成。两者都更好。

2)如果您想进行简单的验证,您只需附加到按钮单击事件,或者更好的是,表单提交事件。

$('form').submit(function()
{
     // Do My Validation

     // return false if invalid, true otherwise
});
于 2012-04-17T18:55:15.357 回答
3

您需要两者都做,并且您应该在客户端使用jQuery Validate

于 2012-04-17T18:54:20.520 回答
2

客户端验证纯粹是为了方便用户和服务器,而不是为了数据卫生。考虑一下您可以随时打开您的开发工具并更改 JS 的事实——您可以完全绕过客户端验证。但是,它不需要您加载更多数据并允许您在导航之前进行验证,这很好。

于 2012-04-17T19:01:19.273 回答
0

就像其他答案所说,最好同时使用服务器端和客户端。知道自己在做什么的人总是可以通过客户端。即使有人完全关闭 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,那么它在确保每个框都有其输入方面非常有用。

于 2012-04-17T19:05:52.720 回答
0

这里的客户端验证很少

在此处输入图像描述在此处输入图像描述


首先 - 在客户端、服务器端或两者上进行验证是最佳实践吗?这是应该验证两次还是在客户端检查足够?

  1. Client Side- 总是好的。前提是 JavaScript 未被阻止。客户端验证加快了流程。减少执行时间。
  2. Server Side- 它总是不费吹灰之力。只需要在性能上妥协。
  3. 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>

示例 JavaScript 代码

<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>

于 2012-04-17T19:29:04.333 回答