主页jquery

时间:2010-11-27 11:57:24

标签: javascript asp.net jquery

您好  我正在使用母版webmethod调用自动完成我的代码js是

   $(document).ready(function(e) {

    $('#ctl00_TextBox1').keyup(function(e) {
        //$('#ctl00_ContentPlaceHolder1_txtTest').keyup(function(e) {
        alert("hi");
        var msgbox = $("#status");
        var tx_val = document.getElementById("ctl00_TextBox1").value;
        alert(tx_val);
        if (e.keyCode != 40 && e.keyCode != 39 && e.keyCode != 38 && e.keyCode != 37) {
            // debugger;
            // alert("hi");
            //debugger;

            $.ajax({

                // alert("ajax");
                type: "POST",
                //Page Name (in which the method should be called) and method name
                url: "Default.aspx/CheckDateTime",
                // If you want to pass parameter or data to server side function you can try line

                data: "{'args':'" + tx_val + "'}",
                //else If you don't want to pass any value to server side function leave the data to blank line below
                // data: "{}",

                contentType: "application/json; charset=utf-8",

                dataType: "json",

                success: function(msg) {
                    //Got the response from server and render to the client
                    msgbox.html(msg.d);
                }
            });
        };
    });
});

我的问题是,当我使用母版页页面代码无法正常工作时,此代码在普通页面(如aspx页面)中运行 表示代码在ajax扩展无效后运行到alert(tx)val);

4 个答案:

答案 0 :(得分:0)

您的ID将根据它们所在的页面(或更确切地说,嵌套方式)而改变,首先我要替换它:

var tx_val = document.getElementById("ctl00_TextBox1").value;

有了这个:

var tx_val = $(this).val();

您的选择器(如果在页面中)执行此操作:

$('#<%=TextBox1.ClientID%>').keyup(function(e) {

如果它在页面之外,请给它一个这样的类:

<asp:TextBox Id="TextBox1" CssClass="dateTime" runat="server" />

并将该类用于您的选择器:

$('.dateTime').keyup(function(e) {

....这也允许您将脚本完全移到外部,而不是依赖于页面生成的任何内容。


另一个潜在问题是"Default.aspx/CheckDateTime"与当前路径无关,请确保您认为合适,您可能需要一个绝对路径,例如"/Default.aspx/CheckDateTime" ......我可以'如果这是在每个页面上,或者在您总想要访问的单个页面上,请告知您的已发布代码。

答案 1 :(得分:0)

因为文本框的客户端ID不再是ctl00_TextBox1。使用母版页时,contentplaceholder id也会附加到客户端ID。所以你最好使用Nick Craver建议的方法,或者通过设置断点并读取ClientID属性来获取新的clientid

答案 2 :(得分:0)

您也可以按类找到该元素,而不是id。

<asp:TextBox runat="server" CssClass="input" />

然后将你的js更新为:

var tx_val = $(".input").value;

答案 3 :(得分:0)

你需要更改你的选择器,类似下面的代码应该可以正常工作:

var tx_val = $('input [id $ = TextBox1]')。val();