Вызов программы внутри файла .cs из функции javascript для функции onkeypress ASP.net

Я пытаюсь создать текстовое поле, которое обновляет текст в нем после нажатия клавиши, поэтому я создал программу внутри класса страницы, которая выполняет нужную мне функцию. Программа работает нормально, мой вопрос в том, как мне вызвать эту программу в функции javascript, когда происходит событие onkeypress:

//Мое текстовое поле:

<asp:TextBox ID="MyBox" onkeypress="AutoText(); return false;" runat="server" 
      Width="400px" ToolTip="Text?" CausesValidation="True" AutoPostBack="True">
</asp:TextBox>

//Моя функция

function AutoText() 
{
    var i;
    i = Class1.BoxTextChanged(object sender, EventArgs e);
}

Я знаю, что функция не работает, и это не то, как вызвать программу из класса С# в JavaScript, я только спрашиваю, возможно ли, как это сделать.

Обратите внимание, что я исследовал это как можно больше, возможно, мои поиски были бесполезны, потому что в этой теме так много тем, или, может быть, я просто сделал это неправильно: P


person user3378869    schedule 04.03.2014    source источник


Ответы (2)


Вы смешиваете клиентскую и серверную часть. ASP.NET выполняется на стороне сервера, а Javascript — на стороне клиента.

Таким образом, вы не можете вызывать функцию ASP.NET непосредственно из Javascript в вашем случае, потому что сервер не может получить доступ к текстовому полю на стороне клиента.

Ваше решение состоит в том, чтобы написать эту функцию на Javascript. Это может быть что-то вроде этого:

function boxTextChanged(text) {
    getElementById('textBoxToUpdate').value(text);
}

Кстати, я просто хочу добавить, что вы можете вызывать ASP.NET непосредственно в Javascript, используя ajax, но серверная сторона никогда не сможет напрямую обновлять DOM на клиенте. сторона. Обычно для получения данных с сервера используется ajax.

person Serge K.    schedule 04.03.2014
comment
Спасибо, это очень полезно, однако моя основная проблема заключается в импорте текстовой строки из программы C # в классе в функцию js, как мне это сделать? - person user3378869; 04.03.2014
comment
@user3378869 user3378869 Чтобы было ясно, вы хотите, чтобы когда пользователь вводит какой-либо текст в текстовое поле, он должен быть написан в другом текстовом поле / div или где-то еще? - person Serge K.; 04.03.2014
comment
Эта часть имеет меньшее значение, но в любом случае она должна заменить текст в том же поле, и снова проблема для меня заключается в том, чтобы получить текст, который программа в редактируемом классе импортирует в функцию js, чтобы выполнить то, что сказал Натан. :) - person user3378869; 04.03.2014
comment
@user3378869 user3378869 вы можете передать значение из вашего ASP.NET в свой Javascript, используя var jsVariable = @yourASPVariableName, если это строка - person Serge K.; 04.03.2014
comment
Действительно? это именно то, что я буду использовать большое спасибо! - person user3378869; 04.03.2014
comment
function AutoText() { var QueryTextCorrected = @QueryCorrection; OrderQueryBox.Text = QueryTextCorrected; } - person user3378869; 04.03.2014
comment
@user3378869 user3378869 Это почти все, но для доступа к вашему OderQueryBox.Text вы должны использовать синтаксис, который я показал вам в своем ответе, указав идентификатор текстового поля. - person Serge K.; 04.03.2014
comment
function AutoText() { var QueryTextCorrected = @InvisibleTextLabel.Text; OrderQueryBox.Text = QueryTextCorrected; } - person user3378869; 04.03.2014
comment
Я добавил невидимую метку для хранения текста из программы, а затем передал его функции js, но нажатие клавиши, похоже, вообще не отвечает - person user3378869; 04.03.2014
comment
Что ж, теперь я понял, что эта функция js превосходит всю суть события onkeypress в том, что касается программы .cs... Я в недоумении... Я просто хочу вызывать программу каждый раз, когда происходит нажатие клавиши ... - person user3378869; 04.03.2014
comment
@ user3378869 Вы делаете это неправильно. Взгляните на мой ответ и измените OrderQueryBox.Text в соответствии с тем, что я показал вам, используя getElementById и присвоив вашему текстовому полю идентификатор. - person Serge K.; 04.03.2014
comment
больше похоже на это? function AutoText() { var QueryTextCorrected = @InvisibleTextLabel.Text; getElementById('OrderQueryBox').value(QueryTextCorrected); } - person user3378869; 04.03.2014
comment
‹скрипт› var QueryTextCorrected = @QueryCorrection; function AutoText() { getElementById('OrderQueryBox').value(QueryTextCorrected); } ‹/скрипт› - person user3378869; 04.03.2014
comment
@user3378869 user3378869 последний должен работать. Вы дали своему текстовому полю идентификатор? Какие-то ошибки в консоли? Ой, плохо, это document.getElementById - person Serge K.; 04.03.2014
comment
о, спасибо за документ. и да, у него есть идея, и дело в том, что с самого начала не было ошибок. В любом случае, спасибо, я буду возиться с этого момента :) - person user3378869; 04.03.2014
comment
@ user3378869 Рад помочь вам :) - person Serge K.; 06.03.2014

вы можете вызвать веб-метод onkeypress envt и передать ему значение текстового поля, которое обновит базу данных значением текстового поля. это делается с помощью javascript, поэтому вам не нужно публиковать всю страницу, чтобы улучшить вашу производительность.

person Rhushikesh    schedule 08.03.2014