0

对不起,如果标题没有解释太多。

我有一个带有文本框、按钮和错误消息的页面。

我需要验证在我的文本框中输入的文本是否不为空或不为空、长度是否合适、其中没有奇怪的字符,最后但并非最不重要的是,我的数据库中不存在该用户名。那部分已经完成并且正在工作。

我的问题是,调用我的 Jscript 函数来验证用户名所在的 asp:textbox 的最佳方法是什么。

现在我看到3种不同的方式。

  1. 当文本框失去焦点时使用 .blur 调用它

  2. 每当按下某个键时,使用 .keyup 或 .keydown 调用它

  3. 使用计时器每 X 秒验证一次

现在 .blur 的问题在于,如果不失去对页面上唯一值得关注的内容的关注,它就无法验证。.keyup 和 .keydown 的问题是它会多次调用我的数据库。计时器的问题是我不确定计时器是否有问题,这就是我问的原因。

我也有一个验证服务器端,所以它不能通过。

有关更多信息,请参阅我现在拥有的带有 .blur 的 jscript。

<script type="text/javascript">
var Name;
var NameValid = false;

$(document).ready(function () {
    Name = $("#txtBox");
    validateName();
    Name.blur(function () {
        validateName();
    });

});

function validateName() {
    NameValid = false;
    PageMethods.NameValidMethod(Name.val(), successName, error);
};

最好的方法是什么?

编辑:添加更多信息。现在我的页面只是一个文本框和一个按钮。将来当我更新我的网站时,页面中的文本框将更多。

4

3 回答 3

2

对于简短的表单,最好的用户体验是在提交表单时执行验证。您是否完全反对使用按钮和/或依赖用户点击“输入”键?

然后在提交表单时使用 Javascript 进行以下验证:“如果在我的文本框中输入的文本不为空或空,长度合适,其中没有奇怪的字符”

然后,如果所有这些都通过,您将继续向服务器提交以检查用户名的唯一性。

于 2013-05-13T18:24:53.490 回答
1

你看过.submit()功能吗?它在您提交表单之前调用,通常用于验证表单:

你可以这样调用:

$('form').on('submit',function(data){
    //Validate the users info.
    //if not valid call e.preventDefault();
});

API:http ://api.jquery.com/submit/

如果您想继续验证每个字段(享受 IMO),您可以使用change()jquery 函数,该函数在发生变化时调用:

$('input..').on('change',function(){
    //That input has changed, validate it now.
});

接口:http ://api.jquery.com/change/

于 2013-05-13T18:22:11.340 回答
0

在我的建议中,您选择正确的方式来处理客户端验证。基于时间的验证似乎不是一个好主意,也不是很实用。

于 2013-05-13T18:28:04.937 回答