2013-02-25 2 views
0

У меня есть веб-приложение, и в нем я делаю проверку на стороне клиента. Это делается путем добавления к каждому Asp: TextBoxCSS Цвета не работают с Javascript после обратной передачи

onkeyup="javascript: value_change(this);" 

После того, как это добирается до изменения значения у меня есть этот Javascript ...

function value_change (text_box) { 
    // validate code here 
    if (valid) { 
     text_box.className = "normalInput"; 
     document.getElementById("GoButton").disabled = false; 
    } 
    else { 
     text_box.className = "errorInput"; 
     document.getElementById("GoButton").disabled = true; 
    } 
} 

Имя класса соответствует CSS классов Характерный фрагмент, которые выглядят как это: -

.normalInput 
{ 
    background-color: #ffffff; 
} 
.errorInput 
{ 
    background-color: #ff0000; 
} 

Это прекрасно работает и денди, когда сначала отображается страница, но после первого постбэка, хотя функция вызывается, установите имя_класса и GoButton Sensi (я продемонстрировал это, выполнив его с помощью отладки), цвета фона не меняются.

Кто-нибудь знает, почему это так и что я должен делать?

Редактировать Принимающ @ совет Пит, я осмотрел text_box сразу после того, как ему присвоено новое имя класса, и кажется, что атрибут currentStyle остается неизменным. Характеристики currentStyle те же, что и класс normalInput; Я изменил их и снова проверил, чтобы проверить. Поэтому я выводю, что назначение игнорируется, а не какой-то другой CSS, который каким-то образом работает.

+0

живой пример был бы хорош для отладки этого. – rzr

+1

Вы используете панель обновления? – Pete

+0

@Pete, нет, на странице нет панелей обновлений. –

ответ

0

Стилизация, измененная на клиенте, не отправляется обратно на сервер. Вам нужно будет установить свойства на сервере самостоятельно, чтобы их сохранить. Сервер создает определение элемента управления из набора свойств, доступных на сервере, и повторно отображает исходное значение. Это связано с тем, что только значение текстового поля возвращается на сервер; все остальное не делает.

С учетом этого вы можете интерпретировать условия включения или отключения кнопки и установить соответствующий стиль CSS, а также установить эти свойства на сервере или повторно применить стили при загрузке документа.

+0

спасибо за ваш ответ. Но проблема заключается не в том, что изменение цвета исчезает. Проблема заключается в том, что перед первым обратным обращением ввод неверных данных в текстовое поле вызывает изменение цвета фона, используя приведенный выше Javascript. После первой обратной передачи ввод неверных данных заставляет Javascript запускаться, но не меняет цвет фона. –

+0

отключение работы после обратной передачи? –

+0

Отключение после обратной передачи на стороне клиента лучше всего использовать коллекцию атрибутов, как в «Атрибутах (« отключено »)». Установка Enabled = "false" в элементе управления .NET ведет себя по-разному. –

0

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

function value_change (text_box) { 
    // validate code here 
    if (valid) { 
     text_box.className = "normalInput"; 
     document.getElementById(text_box.name).style.backgroundColor = "#ffffff"; 
     document.getElementById("GoButton").disabled = false; 
    } 
    else { 
     text_box.className = "errorInput"; 
     document.getElementById(text_box.name).style.backgroundColor = "#ff0000"; 
     document.getElementById("GoButton").disabled = true; 
    } 
} 

т.е., установив его вручную. Мне это не очень нравится, поскольку он управляет тренером и четырьмя целями CSS-классов. Если кто-то может придумать что-то лучшее, я все уши.

Смежные вопросы