2

原谅菜鸟的问题,但我正试图解决这个问题。我有一些控件位于列表视图中,用于提交一些信息。我在这里运行一个测试模式来做到这一点,但我得到了对象未定义的错误。我看到的所有关于这方面的文章都有些模糊。在这个例子中,我试图传递一个文本框的 id,然后从 javascript 中提取值。你能告诉我我做错了什么吗?

<form id="form1" runat="server">
        <asp:ScriptManager runat="server" />
        <script type="text/javascript">
            function ClientIDS(id) {
                var info = document.getElementById(id).value;
                alert(info);
                return false;
            }
        </script>
        <asp:ListView runat="server" ID="lsvTest">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtTextBox" />
                <asp:Button runat="server" ID="btnSubmit" Text='<%#Eval("Name") %>' OnClientClick="ClientIDS('<%=txtTextBox.ClientID %>')" />
            </ItemTemplate>
        </asp:ListView>

    </form>

谢谢

4

5 回答 5

6

如果你想使用jquery比试试这个

onclientclick只需用这个替换按钮

   OnClientClick="ClientIDS(this);"

而不是找到你以前input textasp:listview

function ClientIDS(obj) {

   var txt = $(obj).prevAll('input[id*="txtTextBox"]:first');
   alert($(txt).val());

   return false;
}
于 2012-03-21T17:52:33.283 回答
1

您不能在服务器控件的属性中包含内联代码。

通常我会在代码文件中执行此操作。

    for (int j = 0; j < this.lsvTest.Items.Count; j++)
    {
        var btnSubmit = (Button)this.lsvTest.Items[j].FindControl("btnSubmit");
        var txtTextBox = (TextBox)this.lsvTest.Items[j].FindControl("txtTextBox");
        btnSubmit.Attributes["onclick"] = string.Format("ClientIDS('{0}')", txtTextBox.ClientID);
    }
于 2012-03-21T16:29:17.747 回答
1

Java 脚本代码

<script type="text/javascript">
    function ClientIDS(Btnid) {
        var textBoxID = Btnid.id.replace('btnSubmit', 'txtTextBox');
        var info = document.getElementById(textBoxID).value;
        alert(info);
        return false;
    }
</script>

HTML 代码

<asp:ListView runat="server" ID="lsvTest">
    <ItemTemplate>
        <asp:TextBox runat="server" ID="txtTextBox" />
        <asp:Button runat="server" ID="btnSubmit" Text='<%#Eval("Name") %>' OnClientClick="ClientIDS(this)" />
    </ItemTemplate>
</asp:ListView>
于 2012-03-21T16:48:38.550 回答
0

首先,您正在使用 javascript 来做 jQuery 库应该做的事情。

例如:

var info = document.getElementById(id).value;
//  is easier as
var info = $("#"+id).val();

其次,已经有一段时间了,但我认为你不能把你的 asp 脚本文本放在那样的形式中

于 2012-03-21T16:30:10.350 回答
0

您可以使用 ItemDataBound 事件作为中继器来完成此操作。见以下代码

protected void lsvTest_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    string txtbox = e.Item.FindControl("txtTextBox").ClientID;
    Button btn = e.Item.FindControl("btnSubmit") as Button;
    btn.OnClientClick = string.Format("ClientIDS('{0}')", txtbox);
}
于 2012-03-21T16:55:34.113 回答