1

我不敢相信这以前没有被报道过,但我一直很难在谷歌上找到这个问题的答案。

我正在使用 ASP.NET 学习 AJAX,并且我有一个工作原型。我唯一的问题是我想在 JavaScript 事件(确切地说是 onKeyUp)上启动我的 AJAX 验证,但是,ASP.NET 似乎只支持其 AJAX 版本的服务器端事件。如何从客户端事件调用我的 AJAX?

谢谢

更新

只是想补充一点,我确实发现了这个技巧,但这会导致网站进行回发,如果您尝试执行 AJAX,这对我来说毫无意义。

txtFirstName.Attributes.Add("onKeyUp","__doPostBack('ctl00_ContentPlaceHolder1_txtFirstName','')");
4

2 回答 2

1

听起来您正在做 Web 表单的东西,并且您想验证某些内容是否正在输入,或者至少在他们提交数据之后进行验证。

您可能想看看 ASP.NET Ajax Toolkit。您可以下载 .dll 并将其添加为项目的引用。

看看ValidatorCallOut

于 2012-05-31T20:08:49.667 回答
0

好的,所以我从 w3Schools.com “借来”了这段代码,所以我想给他们点赞

<script type="text/javascript">
  function val() {
    var xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("spnFirstName").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("POST", "server.aspx", true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send();
    //xmlhttp.send("fname=Henry&lname=Ford"); //This is if you want to send values
  }
</script>



First Name: <asp:TextBox ID="txtFirstName" runat="server" OnTextChanged="txtFirstName_TextChanged" AutoPostBack="True" onkeyup="Val()"></asp:TextBox>
<span id="spnFirstName" runat="server" style="color:Red"> </span>

Server.aspx 是一个空页面,其中只有单词“Hello”。如您所见,我将这个简单的 javascript 函数绑定到 onKeyUp 事件。这似乎也不会干扰 ASP.NET AJAX 验证。

我喜欢这样做比添加 dll 好得多,因为只要我坚持使用核心 asp.net 产品,我就不必担心其他开发人员不得不挖掘他们可能没有的库。

于 2012-05-31T20:49:10.090 回答