使用JQuery从asp:textbox中检索值

时间:2009-10-23 09:49:31

标签: c# asp.net jquery

我在网页上的表单中有一些asp:文本框控件,下面是一个片段。第一个是输入收件人的字段,另一个是应该加载收件人姓名的较大文本区域,以及其他一些文本。

<asp:TextBox name="recipient" ID="recipient" class="inputBox" onChange="addNames()" runat="server" />
<asp:TextBox TextMode="MultiLine" name="usermessage" ID="usermessage" class="usermessage" height="128" width="425px" runat="server"></asp:TextBox>

使用带有以下代码的JQuery将标准消息加载到第二个文本框中:

$(".usermessage").val("Hello etc");

这很好用,显示的信息 当用户在其他一个文本框中输入收件人的姓名或他自己的名字时,会触发addNames()。此功能将收件人的名称添加到usermessage框中的标准消息。

function addNames() {
    //update textbox
    var recipient = $(".recipient").val();
    var sender = $(".name").val();
    $(".usermessage").val("Hello " + recipient +", \nThis is a message. \n\rKind regards, \n" + sender);
    }

问题是收件人发件人这两个变量是“未定义的”。

  

Hello undefined,
  这是一条消息。

     

亲切的问候,
  未定义




实际问题:如果这是

,从asp:textbox中检索值的正确代码是什么
var recipient = $(".recipient").val();  

不起作用?

html中的输出如下:

<input name="ctl00$contentPlaceHolderRightColumn$recipient" type="text" id="ctl00_contentPlaceHolderRightColumn_recipient" name="recipient" class="inputBox" onChange="addNames()" />

我正在使用JQuery v1.3.2,Firefox v3.5.3。

6 个答案:

答案 0 :(得分:20)

据我所知,

var recipient = $(".recipient")

将使用CLASS的收件人选择所有dom元素。您的输入框有一个“inputBox”类。

您需要使用#

按ID进行选择

所以:

var recipient = $("#recipient")

但是您正在使用ASP.NET控件,它为服务器上生成一个唯一的ID,因此它是唯一的。 (在你的情况下是ctl00_contentPlaceHolderRightColumn_recipient)

要选择,您需要执行

var recipient = $("#<%=recipient.ClientID%>")

- 编写了一些语法错误

答案 1 :(得分:3)

如果你设置了asp文本框的clientID,你应该能够以与你相同的方式在JQuery中使用它,但是使用哈希而不是点。

E.g。

ClientID = "recipient"

then

    var recipient = $('#recipient').innerHTML() 

or

    var recipient = $('#recipient').text() 

答案 2 :(得分:1)

通过这个你也可以获得asp按钮或任何控制。

var txt_recipient = document.querySelector("input[id*='recipient']");
alert(txt_recipient.Value);

如果您在客户端有多个具有相同ID的控件,也可以尝试querySelectorAll()

jQuery Equalent是

$("input[id*='recipient']").val()

答案 3 :(得分:0)

我认为jQuery选择器会返回一个对象列表。你试过了吗?

var recipient = $(".recipient")[0].val();

<强>更新

那么呢:

  

var recipient =   $( “收件人:第一”)。VAL();

它有一个很好的优势 - 将在第一场比赛中制动。

答案 4 :(得分:-1)

我想asp.net HTML控件必须有ClientID =&#34;收件人&#34;在客户端使用客户端ID访问控件的属性。或者我不知道!

<asp:TextBox ID="recipient" ClientID="recipient" runat="server" name="recipient" class="inputBox" onChange="addNames()" />

尝试这应该有用。

答案 5 :(得分:-3)

在ASP.NET中,您需要以这种方式编写:

&#13;
&#13;
var recipient = $("#<%=recipient.ClientID%>").val();
&#13;
&#13;
&#13;

在MVC中,你可以这样写:

&#13;
&#13;
var recipient = $("#recipient").val();
&#13;
&#13;
&#13;