2015-05-20 2 views
2

ASP.net:Как отключить клавишу ENTER, когда asp.net текстовое поле находится в режиме только для чтения

<textarea id="taskNotes" runat="server" class="taskNotes" rows="10" style=""></textarea> 

HTML генерируется ASP.net TextArea:

<textarea name="ctl00$ContentMain$taskNotes" class="taskNotes" id="ContentMain_taskNotes" style="" rows="10" readOnly="readonly"/> 

Как отключить клавишу ВВОД от выполнения, когда текстовое поле имеет фокус и только чтение.

Я попытался следующие, но не смог завершить:

$('input[class=taskNotes]').keydown(function (e) { 
    if (('.taskNotes')) { // '.is()` is not populating in VS for me to complete... 
     if (e.keyCode === 13) { 
      e.preventDefault(); 
      return false; 
     } 
    } 
}); 

ответ

2

Попробуйте вместо этого:

Используйте эту функцию для предотвращения ввода ключа

$(document).ready(function() { 
    $(document).on('keydown', '.taskNotes[readonly]', function(e){ 
     if (e.which === 13) { 
      e.preventDefault(); 
      return false; 
     } 
    }); 
}); 

Или в качестве альтернативы, использование это для предотвращения фокусировки всего элемента:

$(document).ready(function() {  
    $(document).on('focus', '.taskNotes[readonly]', function(e){ 
     $(this).blur(); 
    }); 
}); 
+0

Это странно, потому что я добавив только для чтения, как: 'taskNotes.Attributes.Add ("ReadOnly", "только для чтения");' Я не знаю, почему это капитал. Кроме того, JS не работал для меня:/ – SearchForKnowledge

+0

В любом случае, чтобы добавить его из кода? Я думаю, что JS не работает:/ – SearchForKnowledge

+0

То же самое. Не работает еще:/Я сдаюсь. Спасибо за помощь – SearchForKnowledge

2
$('.taskNotes').keydown(function (e) {  
    if ($(this).attr('readonly') === 'readonly' && e.keyCode === 13) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

Вам необходимо удалить «вход» из селектора. Это текстовое поле. jsFiddle

Чтобы добавить ReadOnly атрибут можно использовать:

$('.taskNotes').prop("readonly", true); 

или

$('.taskNotes').attr("readonly", "readonly"); 

В зависимости от версии JQuery.

+0

Есть ли какой-либо способ предотвратить его от кода? – SearchForKnowledge

+0

Вы можете попытаться удалить атрибут верблюжьего случая, прежде чем добавлять его снова. $ ('. TaskNotes'). RemoveAttr ("readOnly"); Кажется взломанным, но мне нужно будет увидеть код, чтобы дать лучший ответ – mathius1

+0

Какой код вы хотели бы видеть? – SearchForKnowledge

2

Если вы используете ASP.Net, вы хотите использовать элементы управления TextBox Server.

Отключено Создано TextBox отключено вместо только для чтения. Он более подходит для вашего сценария.

То, как вы делаете, не является стандартным в ASP.Net, и оно действительно хрупкое. Вы можете прочитать Disabled and read-only controls.

<asp:Panel ID="Panel1" runat="server" DefaultButton="SubmitButton"> 
    <asp:TextBox ID="MyTextArea" TextMode="multiline" 
     Columns="50" Rows="5" runat="server" /> 
    <asp:Button runat="server" ID="SubmitButton" Text="Submit" 
     OnClick="SubmitButton_Click" /> 
</asp:Panel> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    MyTextArea.Enabled = false; 
}