在textarea更改 - ajax帖子

时间:2013-10-11 19:46:48

标签: javascript jquery

我有文字区域。 Textarea内容源自可嵌套列表的实现过程。 Textarea内容如下:[{"id":1,"children":[{"id":4}]},{"id":2}]

文字区域:

 <div class="span6">
    <h3>Serialised Output (per list)</h3>
    <textarea id="nestable_list_1_output" class="m-wrap span12"></textarea>
 </div>

我还有一个jquery函数:

$(function() { 

function conv(data){
var result=[];
function dfs(node, parent) {
    for(var i in node){
        result.push({id:node[i].id,pid:parent});
        if (node[i]['children']) dfs(node[i]['children'],node[i]['id']);
    }
}
dfs(data, 0);
return result;
}

我希望每当texarea上的值发生变化时都会发布ajax帖子。

var data     = JSON.stringify(conv($.parseJSON($("textarea#nestable_list_1_output").val())));

$.ajax({
  type: 'POST',
  url: "http://example.com/navigation/save_menu",
  data: 'menu_data=' + JSON.stringify(data),
  dataType: 'json',
  success: console.log('Data Post:' + data),

});
怎么做? 非常感谢您的回复。 Karlis。

更新

基于很棒的社区成员,游戏事件已更改为 clik按钮。 感谢sugestions;)

2 个答案:

答案 0 :(得分:1)

您将创建一个change事件:

$("#nestable_list_1_output").change(function() {
    var currentText = this.value;
    //AJAX TIME
});

答案 1 :(得分:1)

试试这个,

$("#textarea").on('keyup paste', function(e) {
    clearTimeout($(this).data('timeout'));
    $(this).data('timeout', setTimeout(function(){
        alert(e.target.value);
    }, 200));
});

EXAMPLE

这应该适用于从键盘和鼠标

复制粘贴的情况