powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Изменять текст в TextBox2 по TextBox1_TextChanged
11 сообщений из 11, страница 1 из 1
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612798
Rockie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

ASP.NET. Есть пара текстбоксов, мне нужно на TextBox1_TextChanged изменять текст во втором. Какие для этого есть пути?

Сейчас я выставляю текстбоксам свойство AutoPostBack="true"
но событие отрабатывает лишь при уходе фокуса с тексбокса. А мне нужно чтобы текст во втором обновлялся сразу же.

Что пробовал:
1 а) бросить оба на Ajax контрол Update Panel со ScriptManager-ом . При этом AutoPostBack выставить в true
Код: c#
1.
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true"></asp:TextBox>


Страница перестаёт перегружаться, обновляется лишь панель, но та же фигня - значение меняется лишь при смене фокуса с первого текстбокса.
1 b) то же самое но заюзать onchange javascript-а:
Код: c#
1.
TextBox1.Attributes.Add("onchange", "MyFunction();");


javascript на изменение работает, но лишь после ухода фокуса из текстбокса

2) Пробую способ отсюда:
http://forums.asp.net/post/5517142.aspx ( полная ветка )
как понимаю если я буду вызывать WebMethod, он не сможет достучаться до TextBox-ов на странице. тоже не походит


Не хотелось бы переносить всю логику в javascript, хочется всё что надо посчитать на сервере, а в textbox лишь показать.
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612841
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rockie,
Изменять на клиенте не додумывались?
Код: javascript
1.
2.
<input id="tt1" type="text" onkeyup="$('#tt2').val($(this).val())"/><br/>
<input id="tt2" type="text" />
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612866
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rockie,
эпизод с вебметодом
Код: javascript
1.
2.
<input id="tt1" type="text" onkeyup=" $.get('Home/GetText', { data: $(this).val() }).done(function (data) { $('#tt2').val(data); });"/><br/>
<input id="tt2" type="text" />


Код: c#
1.
2.
3.
4.
5.
       [WebMethod]
        public string GetText(string data)
        {
            return data;
        }
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612939
Rockie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

спасибо за ответ! Спасибо, ваши варианты попробую. Дело в том что в этих текстобоксах должны быть результаты пересчётов, например как курсов валют. То есть само пересчитывание делается на сервере, там и специальные классы.. а в текстбоксы при изменениях хотел бы вывести лишь результаты.

За вариант с веб-методом спасибо, для меня сейчас это типо "хак" :) Как понимаю если текстбоксов будет несколько, чтобы обновить значения в остальных тексбоксах нужно будет добавить на сервере по отдельной функции для каждого, и для каждого из каждого вызывать
Код: javascript
1.
$('#ttn').val(data);

как-то так чтоли oO
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612967
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rockie,
автор для меня сейчас это типо "хак" :) это не лайфхак и жись что не наесть ))
авторКак понимаю если текстбоксов будет несколько, чтобы обновить значения в остальных тексбоксах нужно будет добавить на сервере по отдельной функции для каждого, и для каждого из каждого вызывать если есть желание то можете перетащить дохлую лошадь на другую улицу..
Вообще то при работе с веб методами можно туда = сюда запиздяривать объекты а не строки ..
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612974
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rockie,
эпизод с обЪектами
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 function dataApp(text) {
        
        $.ajax({
            type: "POST",
            url: "Home/GetText",
            data: "{ data:'"+text+"' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                $('#tt2').val(response.data1);
                $('#tt3').val(response.data2);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.responseText);
            }
        });
    }
//////////
<input id="tt1" type="text" onkeyup="dataApp( $(this).val());"/><br/>
<input id="tt2" type="text" /><br/>
<input id="tt3" type="text" />
////////////


Код: c#
1.
2.
3.
4.
5.
 [WebMethod]
        public string GetText(string data)
        {
            return new JavaScriptSerializer().Serialize(new { data1 = data, data2 = "ddddddd" + data }); ;
        }
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38612978
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще то лучше заменить
data: "{ data:'"+text+"' }",
на
data: JSON.stringify({ 'data': text }), - вдруг не экранированное говно пользователь вставит
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38615229
Rockie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи, спасибо за ответ!

Нашёл похожий вариант с передачей значения
http://tuvianblog.com/2011/06/10/how-to-call-serverside-function-from-client-side-javascript-in-asp-net/
но там прийдётся разбирать строку на клиенте, а ваш вариант с json правильнее, тогда я смогу передать с сервера все значения сразу "пачкой". но к сожалению всё еще не могу заставить этот пример работать(передачу значения поменял, тк у меня срабатывает только в случае document.getElementById('tt2').value вместо $(this).val())

Default.aspx.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [WebMethod]
        public string GetText(string data)
        {
            // todo: here make all calculations 
            // ..
            
            // здесь не происходит вызова серверной функции

            Response.Write("GetText called on server side");
            return new JavaScriptSerializer().Serialize(new { data1 = data, data2 = "ddddddd" + data });
        }



Default.aspx:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<script type="text/javascript">
    function dataApp(text) {

        alert("dataApp starts");

        $.ajax({
            type: "POST",
            url: "Default/GetText",
            data: "{ data:'"+text+"' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                document.getElementById('tt2').value = response.data1;
                document.getElementById('tt3').value = response.data2;
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.responseText);
            }
        });
    }
</script>


    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
        </asp:ScriptManager>

        <input id="tt1" type="text" onkeyup="dataApp(document.getElementById('tt1').value);"/><br/>
        <input id="tt2" type="text" /><br/>
        <input id="tt3" type="text" />
    </div>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38615327
Rockie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
также делал функцию static и пробовал поместить на саму aspx страницу, чёто всё равно не заводится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationTextBoxTestSQL._Default" %>
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%@ Import Namespace="System.Web.Services" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<script runat="server">
    [WebMethod]
    public static string GetText(string data)
    {
        // todo: here make all calculations 
        // ..
        //Response.Write("GetText called on server side");
        return new JavaScriptSerializer().Serialize(new { data1 = data, data2 = "ddddddd" + data });
    }
</script>

<script type="text/javascript">
    function dataApp(text) {

        alert("dataApp starts with param: " + text);

        $.ajax({
            type: "POST",
            url: "Default.aspx/GetText",
            data: "{ data:'"+text+"' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.responseText);
            }
        });
    }

    function OnSuccess(response) {
        alert(response.data1);
        //                document.getElementById('tt2').value = response.data1; 
        //                document.getElementById('tt3').value = response.data2;
    }
</script>


    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
        </asp:ScriptManager>
        <div>
                <input id="tt1" type="text" onkeyup="dataApp(this.value);"/>
                

                <input id="tt2" type="text" />
                

                <input id="tt3" type="text" />
        </div>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38615354
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rockie,
Может ну его нах.., сделать кнопку - Пересчитать и не выебываться перед заказчиком.? самое простое...
Да и сами веб формс, я ничего не имею против этой технологии, но у начинающих башку рвет напрочь
от полета мысли и ощущения вседозволенности и окрыленности, это как вчера случай в спортзале.
пришел дрыщь ( против них ничего не имею), наложил блинов на штангу для жима 120 кг.
Ходил, настраивался, медитировал минут десять, нашатырь занюхнул пару раз, а в итоге даже поднять для съема не мог
( поднял бы - п....ц ему), ну это как Олег Блохин уебет по воротам мимо, а потом буцу кинется завязывать )))
я же вам дал тынц неужели трудно сделать по нему?
один в один, единственный нюанс там не заходит в петлю библиотеки для парсинга строки в обьект, придется в ручную
как то так
Код: javascript
1.
2.
3.
4.
5.
  success: function (response) {
                var obj = JSON.parse(response.d);
                $('#tt2').val(obj.data1);
                $('#tt3').val(obj.data2);
            }


ну и сама суть <script src="jquery-1.4.1.min.js" type="text/javascript"></script> или как там у вас...
без нее это все мертвечина
...
Рейтинг: 0 / 0
Изменять текст в TextBox2 по TextBox1_TextChanged
    #38615407
Rockie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи ,

ахххахах :) Спасибо большое!! :)
авторsuccess: function (response) {
var obj = JSON.parse(response.d);
$('#tt2').val(obj.data1);
$('#tt3').val(obj.data2);
}
авторну и сама суть <script src="jquery-1.4.1.min.js" type="text/javascript"></script> или как там у вас...
точно!) добавил в head jQuery, теперь работает!)

авторМожет ну его нах.., сделать кнопку - Пересчитать и не выебываться перед заказчиком.? самое простое...
Да и сами веб формс, я ничего не имею против этой технологии, но у начинающих башку рвет напрочь
от полета мысли и ощущения вседозволенности и окрыленности, это как вчера случай в спортзале.
пришел дрыщь ( против них ничего не имею), наложил блинов на штангу для жима 120 кг.
Ходил, настраивался, медитировал минут десять, нашатырь занюхнул пару раз, а в итоге даже поднять для съема не мог
( поднял бы - п....ц ему), ну это как Олег Блохин уебет по воротам мимо, а потом буцу кинется завязывать )))
мда) пожалуй наверное и это всё верно :-)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Изменять текст в TextBox2 по TextBox1_TextChanged
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]