Теги ввода ASP.NET - курсор: по умолчанию - PullRequest
0 голосов
/ 08 августа 2011

У меня есть страница с парой дюжин (динамически изменяемых) полей ввода (в основном текст, несколько кнопок), и когда форма заполнена / отправлена ​​/ завершена, она больше не может быть отредактирована, но все еще может быть измененарассматривается.Для этого я объявил строку с именем disabled, и, если форма была завершена, она устанавливается как

disabled="disabled=\"disabled\""

, а в противном случае имеет значение null.Затем я помещаю его в тег ввода evey, чтобы они были отключены.Это отлично работает.Тем не менее, курсор по-прежнему меняется на указатель на кнопках и текстовый курсор на текстовых полях.Как я могу это изменить?Я пытаюсь с

string disabled = (bool)ViewData["Finalized"] ? "disabled = \"disabled\" style=\"cursor:default\"" : null; 

, который отображает кавычки внутри тегов как ". Функция отключения работает нормально, но курсор не обработан. Я пытался переписать его с одинарными кавычками в строке (то же самое)результат) и с одинарными кавычками вокруг строки и двойными кавычками внутри нее (ошибка, слишком много символов в литерале), но безуспешно. Это что-то, что можно сделать таким образом? Или я поступаю неправильноway?

В результате вышеприведенной настройки получается

<input maxlength="4" type="text" name="input1" value="1"  disabled = &quot;disabled&quot; style=&quot;cursor:default&quot;/>

Забыл упомянуть, входные данные определены на странице в соответствии с примерами:

<input type="button" id="newtablebutton" class="pctbutton white" value="Add Table" onclick="showbox()" <%: disabled %> />

Ответы [ 6 ]

1 голос
/ 14 августа 2011

То есть выход точно такой?

<input maxlength="4" type="text" name="input1" value="1"  disabled = &quot;disabled&quot; style=&quot;cursor:default&quot;/>

Вы отключили строку, закодированную в формате html, когда она установлена ​​на элементе. Причина в том, как вы устанавливаете его на элемент.

Изменить это:

<input type="button" id="newtablebutton" class="pctbutton white" value="Add Table" onclick="showbox()" <%: disabled %> />

К этому:

<input type="button" id="newtablebutton" class="pctbutton white" value="Add Table" onclick="showbox()" <%= disabled %> />

... и тебе должно быть хорошо. Причина в том, что <%: disabled%> html кодирует, а <% = disabled%> нет.

1 голос
/ 13 августа 2011

При рендеринге любой серверной переменной вместе с разметкой в ​​представлении следует использовать метод MvcHtmlString.Create.Он не будет кодировать специальные символы при рендеринге.Попробуйте, это решит вашу проблему.

<input type="button" id="newtablebutton" class="pctbutton white" value="Add Table" onclick="showbox()" <%= MvcHtmlString.Create(disabled) %> />
0 голосов
/ 14 августа 2011

Как насчет того, чтобы добавить это в свой CSS вместо того, чтобы пытаться сгенерировать стиль для каждого элемента?

input[disabled]
{
    cursor: default;
}

(обратите внимание, что в моих тестах Chrome уже использовал курсор по умолчанию для отключенного ввода)

0 голосов
/ 12 августа 2011

Если сомневаетесь, используйте jQuery!

function hideCursor() {
   $("input[disabled='disabled']").css("cursor","default");
}

Просто звоните, когда хотите.

Также, чтобы сделать жизнь проще:

function disableForm() {
    $("#myForm input").attr('disabled', 'disabled');
    $("#myForm input").css("cursor","default");
}

Ура!

0 голосов
/ 10 августа 2011

Вы также можете попробовать установить вход как только для чтения, при этом он отключен.Я не знаю, повлияет ли это на курсор, но может.Определенно проще, чем решение jQuery или JS.

0 голосов
/ 08 августа 2011

Попробуйте использовать курсор: нет , если вы не хотите, чтобы курсор отображался.

Попробуйте добавить что-нибудь к этому эффекту в отключенную строку:

onfocus="javascript:if (this.disabled) this.style.cursor = 'none';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...