2010-05-10 76 views
0

我有一个包含一个asp:textbox,我试图访问使用jQuery的母版页的问题。我已经阅读了许多关于此的sof线程,并尝试了我所见过的所有不同的方法,但无论如何,最终的结果都是Undefined。问题与jQuery选择器和MasterPage

这是母版代码的相关部分:

<p><asp:Label ID="Label1" AssociatedControlID="osxinputfrom" runat="server">Navn</asp:Label><asp:TextBox CssClass="osxinputform" ID="osxinputfrom" runat="server"></asp:TextBox></p> 

当我点击按钮,从一个jQuery .js文件下面的代码运行:

show: function(d) { 
     $('#osx-modal-content .osxsubmitbutton').click(function (e) { 
     e.preventDefault(); 
     if (OSX.validate()){      
      $('#osx-modal-data').fadeOut(200); 
      d.container.animate(
      {height:80}, 
      500, 
      function() { 
       $('#osx-modal-data').html("<h2>Sender...</h2>").fadeIn(250, function() { 
       $.ajax({ 
        type: "POST", 
        url: "Default.aspx/GetDate", 
        data: "{'from':'" + $("#osxinputfrom").val() + "','mailaddress':'" + $("#osxinputmail").val() + "','header':'Test3','message':'Test4'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
        $('#osx-modal-data').fadeOut(200, function() { 
         $('#osx-modal-data').html('<h2>Meldingen er sendt!</h2>'); 
         $('#osx-modal-data').fadeIn(200); 
        }); 
        }, 
        error: function(msg){ 
        $('#osx-modal-data').fadeOut(200, function() { 
         $('#osx-modal-data').html('<h2>Feil oppstod ved sending av melding!</h2>'); 
         $('#osx-modal-data').fadeIn(200); 
        }); 
        } 
       }); 
       }); 
      } 
     ); 
     } 
     else{ 
      $('#osxinputstatus').fadeOut(250, function() { 
      $('#osxinputstatus').html('<p id="osxinputstatus">' + OSX.message + '</a>'); 
      $('#osxinputstatus').fadeIn(250); 
      }); 
     }   
     }); 
    }, 

所以这里的问题是$(“#osxinputfrom”).val()被评估为Undefined。我知道,masterpage会为ID添加一些前缀,所以我尝试使用页面中的ID作为ct100_osxinputfrom,并且还尝试了其他一些搜索后发现的其他后缀,如$(“#<% = osxinputfrom.ClientID%>“),但它最终仍然是从jQuery ajax方法调用的方法中的Undefined。硬编码为Test3和Test4的ajay函数的第三个和第四个参数在C#后端方法中很好。

所以我的问题很简单:我如何重写jQuery选择器从文本框中获取正确的值? (以前我用过的母版页它工作得很好的方式)

问候 守护

+0

您使用的是哪个版本的ASP.NET?使用4.0,您可以尝试使用'ClientIDMode'属性,以便在运行时更容易地找到控件。 – 2010-05-10 12:51:12

回答

1

它会比较慢,但为什么不尝试在你的标签中加入cssclass =“bla”,然后用$('.bla').val();得到它?

+0

我结束了使用这段代码,因为我无法使用client.ID使这段代码工作......至少它有帮助 – Bachask8 2013-12-03 21:15:29

0

您应该使用属性与选择结束

Link

这将是$("id$='osxinputfrom'")

+0

我也尝试过这种方式,并期望它能够工作,但它仍然给未定义的答案。我注意到现在更奇怪的是,在同一个jQuery函数中,在验证中,我有以下代码行: var email = $('#osx-modal-data#ctl00_osxinputemail').val() ; 这工作正常,但在函数的ajax部分内,相同的选择器不起作用。 – 2010-05-10 14:46:43