1

我在 aspx.cs 页面中有这个,并试图在我的 js 函数中获取文本框的值。这不起作用:

result += result.Replace(sOptionText.ToString(), "<input type='text' id=\"txtSS_" + Version + "\" size='10' value=\"" +"\" runat = \"server\" style=\"display:none;\"  />");

我的js函数在这里:

var sOptionList = "";

var $obj = $('#txtSS_' + VersionID);
if ($('#txtSS_' + VersionID).length > 0)
    sOptionList = $obj.val(); 

我得到一个空值。我究竟做错了什么?另外,想知道我在 .cs 页面中的文本框声明是否正确。当我触发它时,它仍然显示 value="" 。

4

3 回答 3

1

这可能是因为未解析的客户端 ID。根据页面/控件的ClientIDMode,控件将以限定值作为前缀。所以实际的 ID 可能更像"ctrl0_ctrl1_txtABC"而不是txtABC.

// javascript
var tb = $('#<%= this.txtMyTextbox.ClientID %>');
alert(tb.length);
alert(tb.val());

但是,您还将input元素构建为字符串,而不是将其实例化为新控件。控制可能甚至没有被执行。

// c#
var tb = new TextBox();
tb.ID = "txtABC";

// Add the control to a container on the page. Any server control can be
// a container. This makes it part of the page lifecycle.
this.Controls.Add( tb );
于 2013-02-19T00:39:12.260 回答
0

我没有在我的点击或我的 jsfunction 中做一个 document.ready。所以,这样做修复了它:

        $(document).ready(function () {
       var $Opt = $("#txtSS_" + VersionID).val();
于 2013-02-19T23:13:03.783 回答
0

有几件事:

  1. $obj 是一个数组。所以你必须使用 $obj[] 访问数组中的一个元素,其中是一个数字
  2. 一旦你有了元素,然后使用属性 .value

因此,对于第一个元素,您将拥有

 sOptionList = $obj[0].value; 
于 2013-02-19T00:44:59.157 回答