繁体   English   中英

验证键入的电子邮件

[英]Verify E-mails as they are typed

用户(内部工作人员)可以在我的页面上输入以逗号分隔的电子邮件地址列表。 我想做的是每次输入逗号时都会检查新写的电子邮件地址是否在通讯簿中。

目前,我已将通讯录存储为H(H)表,以进行O(1)搜索,但是如果建议的话,我可以轻松切换到其他数据结构。

您可以使用JavaScript和AJAX与服务器端进行通信。

您可以执行以下步骤:

  1. 创建一个Web服务,该服务从客户端获取字符串(这是用户键入的电子邮件),对其进行检查并返回true / false。
  2. 将[ScriptService]属性添加到Web服务类。
  3. 在页面上,添加带有Scripts / ScriptReference的ASP.NET ScriptManager控件,该控件指向步骤1中的Web服务。
  4. 在页面上,添加与电子邮件文本框的onkeydown事件关联的javascript代码
  5. 在此事件处理程序中,如果用户键入逗号,请使用文本框值向服务器执行Web服务请求。 收到响应(对或错)时,请执行您需要的任何操作。

您可以在此处此处阅读有关MSDN的更多信息 您可能还会发现AutoComplete AJAX扩展器很有用

为了在按键上完成它,将涉及到javascript(如果您使用的是IE,则为客户端vbscript)。 如果您希望基于键输入来执行此操作,那么就不能没有它。

如果要在用户离开该文本框时执行此操作,则可以使用AutoPostback并在服务器端的C#中对其进行编码-我必须说,我认为这种方法很丑陋。 在我看来,要求同步回发来验证数据对用户来说是一个巨大的负担,因此,在让异步脚本执行工作时,它实际上应该是万不得已或不得已而为之。 您也可以在发布时(当他们试图提交表单时)进行验证,并在任何地址失败的情况下向用户返回验证消息,但同样,这是同步的,用户不会获得早期反馈的好处。

会使用Windows服务(或使用RESTful服务)和javascript调用(使用XmlHttpRequest对象)来执行此操作。 将文本框的keydown事件绑定到JavaScript方法。

<input type="text" onKeyDown="javascript:CheckInput(this)" />

然后设置您的javascript调用-这是正在发生的事情:

免责声明:此代码尚未准备就绪,仅是一个示例,应该为您提供一些指导)

var req;

function CheckInput()
{
    if (window.event) keycode = window.event.keyCode;
    if (keycode == 188) //KeyCode 188 = Comma;
    {

        //I haven't provided code for this, you will need to code
        //the extraction of the address you wish to test for yourself...
        var addressToCheck = ParseLastAddressFromTextBox(); 

        req = new XMLHttpRequest();
        //Replace <SERVICEADDRESS> with the URL of your web service
        //the 'true' parameter specifies that the call should be asynchronous
        req.open("POST", "<SERVICEADDRESS>", true);
        req.onreadystatechange = MatchSearchComplete; //This is the callback method
        //Set up the post headers
        req.setRequestHeader("Host", "localhost");
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        var params = addressToCheck;
        req.setRequestHeader("Content-Length", params.length);
        //Iitiate the call to the service
        req.send(params);        }
}

//The XMLHttpRequest object will fire this method when the
//onreadystatechange event fires...
function MatchSearchComplete()
{
    //Check that the response has the correct state and status
    //indicating that we've received a response from the server.
    if (req.readyState == 4 && req.status == 200)
    {
        //Our call to the service is complete
        var result = req.responseText;
        if (result == "false")
            alert('The address "'+ req.params +'" is not valid.);
    }
}

因此,您在这里要做的是设置XMLHttpRequest,将数据推送到其中,然后将其发送到Web服务。

您的ASP.NET Web应用程序将需要内置的Web服务,该服务将对地址进行验证。

我可能还会警告:如果只有一个地址并且用户没有打逗号怎么办? 您应该将CheckInput()方法的内容移到它自己的用于解析地址的方法中。 KeyDown方法实际上只应检查是否按下了','。 这样,您可以调用Web服务以检查文本框何时失去焦点。 我还会担心修改现有地址,而用户不会再次点击逗号。 因此,我想知道这种方法。 我认为,一旦验证了地址,您应该拥有只允许删除该地址的javascript,它不应是可编辑的……无论采用哪种方法,我只是警告您仅检查就存在一些问题他们使用输入的','方法。

您必须使用Javascript执行此操作。 键入逗号后,才可以将电子邮件传递回C#后端进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM