передача clientID в javascript и извлечение значения, уточнение - PullRequest
2 голосов
/ 21 марта 2012

Простите за вопрос нуба, но я пытаюсь обернуть голову вокруг этого. У меня есть некоторые элементы управления внутри списка, которые используются для отправки некоторой информации. Я запускаю тестовый шаблон, чтобы сделать это, но я получаю неопределенные ошибки объекта. Все статьи, которые я видел по этому поводу, довольно расплывчаты. В этом примере я пытаюсь передать идентификатор текстового поля, а затем получить значение из этого в 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>

Спасибо

Ответы [ 5 ]

6 голосов
/ 21 марта 2012

, если вы хотите использовать jquery, попробуйте

, просто замените кнопку onclientclick на эту

   OnClientClick="ClientIDS(this);"

, а затем найдите свой предыдущий input text вдо asp:listview

function ClientIDS(obj) {

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

   return false;
}
1 голос
/ 21 марта 2012

Код Java Script

<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>
1 голос
/ 21 марта 2012

У вас не может быть встроенного кода в свойстве для серверного элемента управления.

Обычно я делаю это в кодовом файле.

0 голосов
/ 21 марта 2012

Вы можете использовать событие 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);
}
0 голосов
/ 21 марта 2012

Прежде всего, вы используете javascript, чтобы делать то, что должна делать библиотека jQuery.

Например:

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

Во-вторых, это было какое-то время, но я не думаю, что вы можете поместить свой текст сценария asp в такую ​​форму

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...