У вызова Javascript есть старые значения при изменении текстового поля

1

У меня есть ситуация, когда у меня есть два текстовых поля бок о бок, а на первом я (в стороне на стороне сервера) добавляю обработчики следующим образом (обратите внимание, что я должен делать эту серверную сторону, так как текстовые поля создаются динамически):

tb.TextChanged += new EventHandler(TextBox_Changed);

// Thickness checker
if (ThicknessCheckColumn != "")
{
     tb.Attributes.Add("onchange", "CheckThickness(this,\'" + ThicknessCheckColumn.Replace(" ", "").Replace("_", "").Replace("-", "").ToUpper() + "\')");
}

Теперь событие TextBox_Changed записывается в базу данных и устанавливает значение Textbox2 на основе записи в Textbox1 и некоторых настройках базы данных...

private void TextBox_Changed(object sender, EventArgs e)
        {
            {lots of check and database access code here}
TextBox2.Text = Result
}

Javascript проверяет значение флажка 1 и выдает предупреждения, ошибки и т.д.

Его все работает, ЗА ИСКЛЮЧЕНИЕМ предупреждений для предыдущего значения Textbox2.

Как будто код в серверном событии запускается ПОСЛЕ проверки, или фактические значения текстового поля не изменяются, пока все функции не будут разрешены.

Для этого есть причина? Есть ли лучший способ вызвать проверку javascript после завершения серверного события ВСЕ?

Функция Javascript выглядит следующим образом:

function CheckThickness(textControl,checkcolumn) {
    var id = textControl.id;
    // Go get the check value
    var checknumber = ""
    $('form input[type="text"]').each(function () {
        id.toString()
        if (id == checkcolumn) {
                checknumber = this.value;
        }
    })
    // Do the compare
    if (checknumber > 12)
    {
        alert("Proceed with caution!");
    }
    if (checknumber < lowerlimit) {
        alert("LThis blade has not been coated with the recommended thickness,\nbut can still end up within the finished size tolerance.\n\nProceed with caution!");
    }
}

ОБНОВЛЕНО = 7 августа....

Итак, следуя этому, возможно ли мне разместить в текстовом поле "textbox_changed" событие для вызова события на стороне сервера и получить статус от этого, чтобы условно назвать javascript? Чтобы я мог проверять фактические данные на стороне сервера?

Что-то вроде (псевдо-код здесь)...

tb.TextChanged + = new EventHandler ('set retstatus = вызов TextBox_Changed, если retstatus = "Y", тогда вызовите javascript_for_alert');

public sub string TextBox_Changed (....) {... blah blah... if (mycondition == true) {return "Y"} else {return "N"}}

В противном случае, как мне получить javascript для выполнения текущего значения, а не старого значения???

  • 0
    Можете ли вы показать нам функцию JavaScript CheckThickness, пожалуйста?
  • 0
    function CheckThickness (textControl, checkcolumn) {var id = textControl.id; // Перейти к получению контрольного значения var checknumber = "" $ ('form input [type = "text"]'). Each (function () {id.toString () if (id == checkcolumn) {checknumber = this. value;}}) // Выполните сравнение if (checknumber> 12) {alert ("Действуйте с осторожностью!"); } if (checknumber <lowerlimit) {alert ("Too low"); }}
Показать ещё 1 комментарий
Теги:
server
events

1 ответ

0

Вы верны: метод проверки на стороне сервера TextBox_Changed вызывается после проверки JavaScript.

Обработчики кликов на стороне клиента запускаются до того, как клик отправит форму на сервер. Проверка на стороне клиента может использовать только значение Textbox2, которое появляется на странице, прежде чем ваш обработчик на стороне сервера изменит его.

  • 0
    Спасибо за это.
  • 0
    Таким образом, исходя из этого, могу ли я поместить в текстовое поле событие textbox_changed, чтобы вызвать событие на стороне сервера, и получить обратно статус, чтобы условно вызвать javascript? Что-то вроде псевдокода здесь) ... tb.TextChanged + = new EventHandler ('set retstatus TextBox_Changed; если retstatus = "Y", тогда вызвать javascript'); открытая подстрока TextBox_Changed (....) {... бла-бла-бла ... if (mycondition == true) {return "Y"} else {return "N"}}
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню