2013-07-08 3 views
4

Проблема: Так что я оповестил значение textarea по:Как я могу получить текущее значение textarea?

var source = document.getElementById('source').value; 
      alert(source); 

Но значение textarea предупреждается, как это было во время загрузки страницы. И я хочу предупредить текущее значение textarea. Я также пробовал

$("form").submit(function(){ 

Но это также мне не помогло. Итак, как я могу это сделать?

Это мой код.

<html> 
    <head> 
    <title>Perl WEB</title> 
    <script type="text/javascript" src="http://code.guru99.com/Perl1/codemirror.js"></script> 
    <link rel="stylesheet" href="http://code.guru99.com/Perl1/codemirror.css" type="text/css" media="screen" /> 
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
    <script type="text/javascript" src="http://code.guru99.com/perl/perl.js"></script> 
    <style> 
    .CodeMirror { 
    border: 1px solid #eee; 
    } 
    .CodeMirror-scroll { 
    height: auto; 
    overflow-y: hidden; 
    overflow-x: auto; 
    } 
</style> 
<script> 
$(document).ready(function(){ 
    $("form").submit(function(){ 
    alert("Submitted"); 
    }); 
}); 
</script> 
<script type="text/javascript"> 

    function execute() { 
      p5pkg.CORE.print = function(List__) { 
       var i; 
       for (i = 0; i < List__.length; i++) { 
        document.getElementById('print-result').value += p5str(List__[i]) 
       } 
       return true; 
      }; 
      p5pkg.CORE.warn = function(List__) { 
       var i; 
       List__.push("\n"); 
       for (i = 0; i < List__.length; i++) { 
        document.getElementById('log-result').value += p5str(List__[i]); 
       } 
       return true; 
      }; 
      p5pkg["main"]["v_^O"] = "browser"; 
      p5pkg["main"]["Hash_INC"]["Perlito5/strict.pm"] = "Perlito5/strict.pm"; 
      p5pkg["main"]["Hash_INC"]["Perlito5/warnings.pm"] = "Perlito5/warnings.pm"; 

      var source = document.getElementById('source').value; 
      alert(source); 
      var pos = 0; 
      var ast; 
      var match; 
      document.getElementById('log-result').value = ""; 
     // document.getElementById('js-result').value = ""; 
      document.getElementById('print-result').value = ""; 
      try { 
       // compile 
       document.getElementById('log-result').value += "Compiling.\n"; 
       var start = new Date().getTime(); 
       var js_source = p5pkg["Perlito5"].compile_p5_to_js([source]); 
       var end = new Date().getTime(); 
       var time = end - start; 
       document.getElementById('log-result').value += "Compilation time: " + time + "ms\n"; 
     //  document.getElementById('js-result').value += js_source + ";\n"; 

       // run 
       start = new Date().getTime(); 
       eval(js_source); 
       end = new Date().getTime(); 
       time = end - start; 
       document.getElementById('log-result').value += "Running time: " + time + "ms\n"; 

       p5pkg.CORE.print(["\nDone.\n"]); 
      } 
      catch(err) { 
       document.getElementById('log-result').value += "Error:\n"; 
       document.getElementById('log-result').value += err + "\n"; 
       document.getElementById('log-result').value += "Compilation aborted.\n"; 
        } 
     } 
    </script> 
    </head> 
    <body> 
    <form> 
<textarea id="source" cols="70" rows="10"> 
say 'h'; 
</textarea> 
    <div class="hint">This code is editable. Click Run to execute.</div> 
    <input type="button" value="Run" onclick="execute()"/></br> 
Output:</br> 
    <textarea id="print-result" disabled="true" rows="10" cols="70"></textarea></br> 
Log:</br> 
    <textarea id="log-result" disabled="true" cols="70"></textarea> 
    <script> 
     var editor = CodeMirror.fromTextArea(document.getElementById("source"), { 
     lineNumbers: true, 
     indentUnit: 4, 
     indentWithTabs: true, 
     enterMode: "keep", 
     tabMode: "shift" 
     }); 
    </script> 
</form> 
    </body> 
</html> 

Итак, как я могу получить текущее значение textarea? Пожалуйста, помогите мне, ребята.

+0

храните в себе валентность текстового поля в переменной, а затем предупреждайте об этом. –

+2

Ну, когда именно вы хотите, чтобы значение отображалось? – Aioros

+0

Вы должны выполнить в какой-то момент позже. Например, в качестве ответа на взаимодействие с пользователем, после изменения пользователем значения. «Как» сделать это зависит от того, что именно вы хотите. –

ответ

1

Я не знаком с CodeMirror, но то, что вы точно видите на экране, это не оригинал #source больше. Вместо этого существует несколько элементов, созданных CodeMirror, а исходный textarea скрыт.

Когда я смотрю на документацию, я нашел это:

var source = editor.doc.getValue(); 
alert(source); 

Или, так как вы построили editor объект с fromTextArea() методом, вы можете обновить значение в textarea перед чтением:

editor.save(); 
var source = document.getElementById('source').value;   
alert(source); 

Обратите внимание также на то, что сказал Адам о форме. И в вашем HTML есть недопустимые теги </br>, правильная форма - <br />.

Пожалуйста, посетите страницу CodeMirror User Manual для получения дополнительной информации.

0

Как вы уже JQuery загружены вы можете сделать следующее:

var content = $('#source').val(); 
alert(content); 

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

Этот код создает кнопку, которая будет предупреждать содержимое вашего текстового поля при нажатии:

<button onclick="alert($('#source').val())">Click me</button> 
+1

Это не отвечает на вопрос. –

+0

Надеюсь, теперь это так ... – thibauts

+0

Кто этот джокер поддержал этот ответ? Содержимое оповещения по-прежнему является исходным значением, а не одним пользователем. – Teemu

0

Попробуйте следующее внутри представить()

var textAreaVal = $("#print-result").val(); 
alert(textAreaVal); 
0

если Yout хочет значение для предупреждения когда мышь покидает текстовое поле, вы можете попытаться добавить onblur = "myFunction()" к вводу что-то вроде: (на самом деле, если вы хотите, чтобы он оставался на мышке, вы можете добавить onmouseout = "myFunction()")

<textarea id="source" cols="70" rows="10" onblur="myFunction()"> 
    say 'h'; 
</textarea> 


<script type="text/javascript"> 
    function myFunction() { 
     var source = document.getElementById('source').value; 
     alert(source); 
    } 
</script> 
0

Ваша форма не отправляется, когда кнопка нажата, так как это не кнопка отправки.

Это не будет отправлять форму и не будет уведомлять ее о содержании.

<input type="button" value="Run" onclick="execute()"/></br> 

Добавить что-то подобное в виде:

<input type="submit" value="Submit"> 
+0

Хотя вы правы с этим, нажатие кнопки выполняет 'execute()', в котором 'alert()' показывает неожиданное значение. – Teemu

Смежные вопросы