Можно ли установить флажки HTML только для чтения?

Существует более короткий, быстрый и приятный способ, чем эта волосатая формула с несколькими экстрактами.

Просто попробуйте это, чтобы получить время отклика в секундах:

(sysdate + (endtime - starttime)*24*60*60 - sysdate)

Он также сохраняет дробная часть секунд при вычитании TIMESTAMP.

См. http://kennethxu.blogspot.com/2009/04/converting-oracle-interval-data-type-to.html для некоторых деталей.


Обратите внимание: пользовательские функции pl / sql имеют значительную служебную нагрузку , которая может быть непригодна для тяжелых запросов.

767
задан Electrons_Ahoy 30 September 2008 в 21:58
поделиться

14 ответов

я просто не хочу, чтобы клиент был в состоянии изменить их при определенных обстоятельствах.

ТОЛЬКО ДЛЯ ЧТЕНИЯ самостоятельно не будет работать. Можно быть в состоянии сделать что-то броский w/CSS, но мы обычно просто делаем их отключенными.

ПРЕДУПРЕЖДЕНИЕ: Если они отправляются тогда, клиент может изменить их, период. Вы не можете полагаться только для чтения, чтобы препятствовать тому, чтобы пользователь изменил что-то. Можение всегда использует скрипача или просто chane HTML w/firebug или некоторая такая вещь.

0
ответ дан Walden Leverich 30 September 2008 в 21:58
поделиться

Нет, но Вы могли бы быть в состоянии использовать события JavaScript для достижения чего-то подобного

-4
ответ дан Mayowa 30 September 2008 в 21:58
поделиться

READONLY не работает над флажками, поскольку это препятствует тому, чтобы Вы редактировали значение поля , но с флажком Вы на самом деле редактируете состояние поля (на || прочь)

От faqs.org :

важно понять, что ТОЛЬКО ДЛЯ ЧТЕНИЯ просто препятствует тому, чтобы пользователь изменил значение поля, не от взаимодействия с полем. Во флажках, например, можно проверить их или прочь (таким образом установка ПРОВЕРЕННОГО состояния), но Вы не изменяете значение поля.

, Если Вы не хотите использовать disabled, но все еще хотеть отправить значение, как насчет того, чтобы отправить значение как скрытое поле и просто распечатать его содержание пользователю, когда они не соответствуют критериям редактирования? например,

// user allowed change
if($user_allowed_edit)
{
    echo '<input type="checkbox" name="my_check"> Check value';
}
else
{
    // Not allowed change - submit value..
    echo '<input type="hidden" name="my_check" value="1" />';
    // .. and show user the value being submitted
    echo '<input type="checkbox" disabled readonly> Check value';
}
410
ответ дан 3 revs, 3 users 95% 30 September 2008 в 21:58
поделиться

Это - флажок, который Вы не можете изменить:

<input type="checkbox" disabled="disabled" checked="checked">

Просто добавляют disabled="disabled" как атрибут.


Редактирование для обращения к комментариям:

, Если Вы хотите, чтобы данные были отправлены назад, чем, простые решения должны применить то же имя к скрытому входу:

<input name="myvalue" type="checkbox" disabled="disabled" checked="checked"/>
<input name="myvalue" type="hidden" value="true"/>

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

316
ответ дан 5 revs, 3 users 52% 30 September 2008 в 21:58
поделиться

Это представляет что-то вроде проблемы удобства использования.

, Если Вы хотите отобразить флажок, но не позволить ему взаимодействоваться с, почему даже флажок тогда?

Однако мой подход должен был бы использовать отключенный (Пользователь ожидает, что отключенный флажок не будет доступен для редактирования, вместо того, чтобы использовать JS, чтобы заставить включенный не работать), и добавьте, что форма отправляет обработчик с помощью JavaScript, который включает флажки прямо, прежде чем форма будет отправлена. Таким образом, Вы Вы действительно отправляли свои значения.

т.е. что-то вроде этого:

var form = document.getElementById('yourform');
form.onSubmit = function () 
{ 
    var formElems = document.getElementsByTagName('INPUT');
    for (var i = 0; i , formElems.length; i++)
    {  
       if (formElems[i].type == 'checkbox')
       { 
          formElems[i].disabled = false;
       }
    }
}
44
ответ дан 2 revs 30 September 2008 в 21:58
поделиться

Вы могли всегда использовать маленькое изображение, которое похоже на флажок.

-3
ответ дан Adam Pierce 30 September 2008 в 21:58
поделиться
<input type="checkbox" onclick="this.checked=!this.checked;">

, Но абсолютно НЕОБХОДИМО проверить данные по серверу, чтобы гарантировать, что это не было изменено.

63
ответ дан Grant Wagner 30 September 2008 в 21:58
поделиться

When posting an HTML checkbox to the server, it has a string value of 'on' or ''.

Readonly does not stop the user editing the checkbox, and disabled stops the value being posted back.
One way around this is to have a hidden element to store the actual value and the displayed checkbox is a dummy which is disabled. This way the checkbox state is persisted between posts.

Here is a function to do this. It uses a string of 'T' or 'F' and you can change this any way you like. This has been used in an ASP page using server side VB script.

public function MakeDummyReadonlyCheckbox(i_strName, i_strChecked_TorF)

    dim strThisCheckedValue

    if (i_strChecked_TorF = "T") then
        strThisCheckedValue = " checked "
        i_strChecked_TorF = "on"
    else
        strThisCheckedValue = ""
        i_strChecked_TorF = ""
    end if

    MakeDummyReadonlyCheckbox = "<input type='hidden' id='" & i_strName & "' name='" & i_strName & "' " & _
        "value='" & i_strChecked_TorF & "'>" & _
    "<input type='checkbox' disabled id='" & i_strName & "Dummy' name='" & i_strName & "Dummy' " & _
        strThisCheckedValue & ">"   
end function

public function GetCheckbox(i_objCheckbox)

    select case trim(i_objCheckbox)

        case ""
            GetCheckbox = "F"

        case else
            GetCheckbox = "T"

    end select

end function

At the top of an ASP page you can pickup the persisted value...

strDataValue = GetCheckbox(Request.Form("chkTest"))

and when you want to output your checkbox you can do this...

response.write MakeDummyReadonlyCheckbox("chkTest", strDataValue)

I have tested this and it works just fine. It also does not rely upon JavaScript.

0
ответ дан 22 November 2019 в 21:21
поделиться

большинство текущих ответов имеет один или несколько из этих проблем:

  1. Только проверка на мышь не клавиатура.
  2. Проверка только на загрузке страницы.
  3. Hook когда-либо популярное изменение или отправляет события, которые будут не всегда удаваться, имеет ли что-то еще их сцепленный.
  4. Требуют скрытого входа или других специальных элементов/атрибутов, которые необходимо отменить, чтобы повторно включить флажок с помощью JavaScript.

следующее просто и не имеет ни одной из тех проблем.

$('input[type="checkbox"]').on('click keyup keypress keydown', function (event) {
    if($(this).is('[readonly]')) { return false; }
});

, Если флажок только для чтения, он не изменится. Если это не будет, то это будет. Это действительно использует jQuery, но Вы уже, вероятно, используете это...

Это работает.

1
ответ дан 22 November 2019 в 21:21
поделиться
<input name="isActive" id="isActive" type="checkbox" value="1" checked="checked" onclick="return false"/>
6
ответ дан 22 November 2019 в 21:21
поделиться

Мое решение фактически противоположно решению FlySwat, но я не уверен, что оно подойдет для вашей ситуации. У меня есть группа чекбоксов, и у каждого есть обработчик onClick, который отправляет форму (они используются для изменения параметров фильтра для таблицы). Я не хочу разрешать многократные нажатия, поскольку последующие нажатия после первого игнорируются. Поэтому я отключаю все флажки после первого нажатия и после отправки формы:

onclick="document.forms['form1'].submit(); $('#filters input').each(function() {this.disabled = true});"

Флажки находятся в элементе span с идентификатором "filters" - вторая часть кода представляет собой оператор jQuery, который перебирает флажки и отключает каждый из них. Таким образом, значения чекбоксов по-прежнему отправляются через форму (поскольку форма была отправлена до их отключения), и это не позволяет пользователю изменить их до перезагрузки страницы.

0
ответ дан 22 November 2019 в 21:21
поделиться
<input type="checkbox" readonly="readonly" name="..." />

с помощью jquery:

$(':checkbox[readonly]').click(function(){
            return false;
        });

все же может быть хорошей идеей дать визуальный намек (css, текст, ...), что элемент управления не будет принимать входные данные.

36
ответ дан 22 November 2019 в 21:21
поделиться
onclick="javascript: return false;"
8
ответ дан 22 November 2019 в 21:21
поделиться

Если вам нужно, чтобы флажок был отправлен вместе с формой, но фактически доступен только для чтения пользователю, я рекомендую отключить их и использовать javascript, чтобы повторно включить их при отправке формы.

На это есть две причины. Во-первых, что наиболее важно, вашим пользователям будет выгодно видеть видимую разницу между флажками, которые они могут изменять, и флажками, доступными только для чтения. Disabled делает это.

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

0
ответ дан 22 November 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: