[英]Verify E-mails as they are typed
用户(内部工作人员)可以在我的页面上输入以逗号分隔的电子邮件地址列表。 我想做的是每次输入逗号时都会检查新写的电子邮件地址是否在通讯簿中。
目前,我已将通讯录存储为H(H)表,以进行O(1)搜索,但是如果建议的话,我可以轻松切换到其他数据结构。
您可以使用JavaScript和AJAX与服务器端进行通信。
您可以执行以下步骤:
您可以在此处和此处阅读有关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.