Флажки обычно представляют двоичные данные, которые хранятся в базе данных, как значения Да / Нет, Да / Нет или 1/0. Флажки HTML имеют плохую природу отправлять значение на сервер, только если флажок установлен! Это означает, что серверный сценарий на другом сайте должен заранее знать, какие есть все возможные флажки на веб-странице, чтобы иметь возможность хранить положительные (проверенные) или отрицательные (неотмеченные) значения. На самом деле только отрицательные значения являются проблемой (когда пользователь снимает отметку с ранее (предварительно) отмеченного значения - как сервер может узнать об этом, если ничего не отправлено, если он не знает заранее, что это имя должно быть отправлено). Если у вас есть сценарий на стороне сервера, который динамически создает сценарий UPDATE, возникает проблема, потому что вы не знаете, какие все флажки должны быть получены, чтобы установить значение Y для отмеченных и значение N для непроверенных (не полученных).
Поскольку я храню значения «Y» и «N» в своей базе данных и представляю их с помощью отмеченных и снятых флажков на странице, я добавил скрытое поле для каждого значения (флажок) со значениями «Y» и «N», а затем использую флажки только для визуального отображения. представление и используйте простую функцию JavaScript check (), чтобы установить значение if в соответствии с выбором.
<input type="hidden" id="N1" name="N1" value="Y" />
<input type="checkbox"<?php if($N1==='Y') echo ' checked="checked"'; ?> onclick="check(this);" />
<label for="N1">Checkbox #1</label>
используйте один прослушиватель onclick JavaScript и вызовите функцию check () для каждого флажка на моей веб-странице:
function check(me)
{
if(me.checked)
{
me.previousSibling.previousSibling.value='Y';
}
else
{
me.previousSibling.previousSibling.value='N';
}
}
Таким образом, значения «Y» или «N» всегда отправляются в сценарий на стороне сервера, он знает, какие поля должны быть обновлены, и нет необходимости преобразовывать значение флажка «включено» в значение «Y» или флажок «Не получен» в «N». '.
ПРИМЕЧАНИЕ: пробел или новая строка также являются родственными, поэтому здесь мне нужен .previousSibling.previousSibling.value. Если между ними нет пробела, только .previousSibling.value
Вам не нужно явно добавлять прослушиватель onclick, как раньше, вы можете использовать библиотеку jQuery для динамического добавления прослушивателя щелчка с функцией для изменения значения для всех флажков на вашей странице:
$('input[type=checkbox]').click(function()
{
if(this.checked)
{
$(this).prev().val('Y');
}
else
{
$(this).prev().val('N');
}
});
person
sbrbot
schedule
15.09.2014