2010-08-09 2 views
0

Можно ли отправить функцию javascript для проверки, было ли изменено поле формы, а затем передать boolean (bCheckField) функции фильтра, которая сообщит ему, что он действительно выполнит проверку или пропустит проверку и продолжит? Если да, то как мне это подойти?Создание функции JS для отправки функции boolean в Coldfusion Filter?

Использование Coldfusion 8, MachII и Microsoft SQL.

+0

Является ли это для взаимодействия AJAX? Или просто на стандартной форме подать? –

+0

Просто стандартная форма submit ... – Alex

ответ

1

Вы можете сохранить текущее значение в скрытых полях.

так:

<input type="text" id="firstname" value="#firstname#"> 
<input type="hidden" id="old_firstname" value="#firstname#"> 

на пост сравнить каждый отправить флаг CF.

+0

Большое вам спасибо! Я собираюсь использовать эту технику с фильтром MachII для прокрутки и проверить, является ли поле уникальным :) – Alex

+1

Я бы посоветовал не хранить вещи в области формы, которая будет определять валидацию на стороне БД. Помните, что я могу, например, использовать дополнение FireFox, чтобы скрытые поля были видимыми/редактируемыми. Вот почему я предложил постоянный объем. –

+0

Как Бен Дум указал в своем комментарии, и его сообщение НЕ доверяет пользовательскому вводу, как если бы это были нормальные данные. Его легко подделать. Если это проверка на стороне клиента, чтобы отображать ошибки пользователю в симпатичном формате для пользователя, это нормально, если это ваша последняя линия защиты, прежде чем попасть в БД, не используйте эту технику. – jfrobishow

2

Самый простой способ, насколько я знаю, - проверить ваш флажок (или заполнить скрытое поле и т. Д.), Когда onChange() запускается в целевом поле.

С другой стороны, если это нужно, чтобы вставить/обновить поле SQL, я, вероятно, не буду доверять JS, чтобы позволить пользователю пропустить проверку (если он также не пропускает вставку/обновление). Вы всегда можете хранить исходные данные поля в постоянной области и выполнять сопоставление на стороне сервера при возврате формы.

+0

+1 не полагайтесь исключительно на JS, чтобы иметь дело с вещами, которые достигнут БД. – jfrobishow

1

Вы можете назначить обработчик событий для onchange.

Например:

var wasChanged = {}; 

inputElement.onchange = function() { wasChanged[this.id] = true; } 

function validateElement (element) { 
    if (wasChanged[element.id]) { 
     // validate 
    } 
} 
+0

Проблема с этим подходом заключается в том, что если пользователь меняет значение, он становится помеченным. Затем, если пользователь решает изменить его обратно на исходное значение, он по-прежнему остается помеченным. –