有DB调用时调用验证Jscript函数的正确方法是什么?

时间:2013-05-13 18:16:55

标签: javascript asp.net database validation

很抱歉,如果标题没有解释清楚。

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

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

我的问题是,调用我的Jscript函数调用用户名为的asp:textbox的最佳方法是什么。

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

  1. 使用.blur在文本框中丢失焦点时调用它

  2. 只要按下某个键,就使用.keyup或.keydown来调用它

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

  4. 现在.blur的问题在于它不会在不关注页面上唯一值得关注的事情的情况下进行验证。 .keyup和.keydown的问题是它会多次调用我的DB方式。而计时器的问题是我不确定计时器是否有问题,这就是我要问的原因。

    我还有一个验证服务器端,因此无法完成。

    有关更多信息,请参阅我现在拥有.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);
    };
    

    最好的方法是什么?

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

3 个答案:

答案 0 :(得分:2)

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

然后在提交表单时使用Javascript完成以下验证:“如果在我的文本框中输入的文本不为null或为空,具有良好的长度,则其中没有奇怪的字符”

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

答案 1 :(得分:1)

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

您可以这样打电话:

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

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

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

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

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

答案 2 :(得分:0)

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