2013-02-27 2 views
1

Я пытаюсь установить соединение с SignalR в веб-приложении ASP.NET MVC 4. Что мне нужно сделать, так это позволить пользователю писать в текстовой области, и при нажатии я пытаюсь отправить сообщение, написанное пользователем, всем клиентам на той же странице.Как получить введенный текст из текстовой области

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

var msg = $('#editor').text(); 
alert(msg); 

Я использую окно предупреждения для целей тестирования. Проблема в том, что окно предупреждения отображается пустым, то есть сообщение не читается должным образом. editor - это идентификатор моей текстовой области в html-файле.

Это все файл JavaScript:

$(function() 
    { 
     var edit = $.connection.editorHub; 

     edit.client.broadcastMessage = function (message) { 

      var msg = $('#editor').text(); 
      alert(msg); 

      // Add the message to the page. 
      $('#editor').append(msg); 
     }; 

     $.connection.hub.start().done(function() { 
      $('#button').click(function() { 
       // call the send method in EditorHub 
       chat.server.send($('#editor').val()); 
      }); 
     }); 
    }); 

Это HTML-файл:

@{ 
    ViewBag.Title = "- Editor"; 
    ViewBag.ContentStyle = "/Content/CSS/editor.css"; 
} 

<script src="/Scripts/jquery-1.6.4.min.js" ></script> 
<script src="/Scripts/jquery.signalR-1.0.0.js"></script> 
<script src="/signalr/hubs"></script> 
<script type="text/javascript" src="~/Content/tinyMCE/tiny_mce.js" ></script> 
<script type="text/javascript" src="~/Scripts/EditorHandler.js"></script> 

<button id="button">Click me</button> 

<form> 
     <textarea id="editor" name="content" cols="100" rows="30"> 
    </textarea> 
</form> 

Он загружается через AJAX поэтому это содержание .. Остальное в мастер-файле

+3

Покажите нам свой HTML :) – Alexander

+0

Что такое '# editor' и почему бы получить функцию под названием' text() '? (Нам тоже нужно увидеть HTML) – Hogan

+0

Html Файл представлен .. #editor - это текстовое поле, как показано выше – Bernice

ответ

7

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

$('#editor').val(); 

Или, чтобы получить содержание от TinyMCE:

var msg = tinyMCE.get('#editor').getContent() 

или

var msg = tinyMCE.activeEditor.getContent(); 
+0

Я пробовал это уже и получил тот же результат! – Bernice

+0

Кажется работать для меня -> [** FIDDLE **] (http://jsfiddle.net/3bKcC/) ??? – adeneo

+2

@adeneo, скорее всего, tinyMCE скрывает редактор и заменяет его своим собственным, вам нужно сказать tinyMCE, чтобы вывести содержимое из редактора tinyMCE в скрытую текстовую область. –

1

Я отметить странную разницу между двумя частями кода:

Здесь мы используем val()

chat.server.send($('#editor').val()); 

Здесь мы используем text()

var msg = $('#editor').text(); 

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

+0

У вас там есть точка. Однако, когда я изменил их оба на val(), я получил тот же результат. По какой-то причине msg остается нулевым! – Bernice