2016-08-27 7 views
0

Я хочу отправить форму автоматически через х секунд без нажатия кнопки отправки. This sample работает нормально, но когда я положил этот образец в my code, он не работал.Как отправить форму автоматически через x секунд?

Что случилось с моим кодом?

CodeMirror.commands.autocomplete = function(cm) { 
    CodeMirror.showHint(cm, CodeMirror.hint.anyword); 
}; 


var editor = CodeMirror.fromTextArea(document.getElementById("code"), { 
    lineNumbers: true, 
    matchBrackets: true, 
    mode: "text/x-stsrc", 
    indentUnit: 4, 
    autoCloseBrackets: true, 
    highlightSelectionMatches: true, 
    styleActiveLine: true, 
    extraKeys: { 
     "Ctrl-Space": "autocomplete" , 
     "Ctrl-Space":function(cm){ CodeMirror.showHint(cm, CodeMirror.hint.anyword); }, 
     "'.'" : function(cmm){ CodeMirror.showHint(cmm, CodeMirror.hint.anyword);}, 
    }, 
    autohint: true, 
    readOnly: false, 
    lineWrapping: true, 
}); 

editor.on("blur", function(codeMirror) { codeMirror.save(); }); 

editor.refresh(); 

var orig = CodeMirror.hint.anyword; 

CodeMirror.hint.anyword = function(cm) { 
    var inner = orig(cm) || { from: cm.getCursor(), to: cm.getCursor(), list: []}; 
    inner.list.push("mariano"); 
    inner.list.push("florencia"); 
    inner.list.push("zoe"); 

    return inner; 
}; 
var timeoutId; 
$('form input, form textarea').on('input propertychange change', function() { 
    console.log('Textarea Change'); 

    clearTimeout(timeoutId); 
    timeoutId = setTimeout(function() { 
     // Runs 1 second (1000 ms) after the last change  
     saveToDB(); 
    }, 1000); 
}); 

function saveToDB() 
{ 
    console.log('Saving to the db'); 
    form = $('.contact-form'); 
    $.ajax({ 
     url: "/echo/json/", 
     type: "POST", 
     data: form.serialize(), // serializes the form's elements. 
     beforeSend: function(xhr) { 
      // Let them know we are saving 
      $('.form-status-holder').html('Saving...'); 
     }, 
     success: function(data) { 
      var jqObj = jQuery(data); // You can get data returned from your ajax call here. ex. jqObj.find('.returned-data').html() 
      // Now show them we saved and when we did 
      var d = new Date(); 
      $('.form-status-holder').html('Saved! Last: ' + d.toLocaleTimeString()); 
     }, 
    }); 
} 

// This is just so we don't go anywhere 
// and still save if you submit the form 
$('.contact-form').submit(function(e) { 
    saveToDB(); 
    e.preventDefault(); 
}); 

CodeMirror.hint.anyword = function(cmm) { 
    var inner1 = orig(cmm) || { from: cmm.getCursor(), to: cmm.getCursor(), list: []}; 
    inner1.list.push("one"); 
    inner1.list.push("tow"); 
    inner1.list.push("three"); 

    return inner1; 
}; 

EDIT: проблема решается этим изменением:

var timeoutId; 
$('form input, form textarea').on('input propertychange change', function() { 
    console.log('Textarea Change'); 
    //alert("chang Comment!"); 

    clearTimeout(timeoutId); 
    timeoutId = setTimeout(function() { 
     // Runs 1 second (1000 ms) after the last change  
     document.forms["contact-form"].submit(); 
    }, 1000); 
}); 
+0

вы можете использовать функцию setTimeout() для этого ???? –

+0

Можете ли вы попытаться исправить свою ошибку? ... Я не знаю, что неправильно в моей попытке ... вы можете исправить и поместить ссылку правильного кода @Rafi – sara

+0

В вашем коде вы не загружаете jQuery, я получаю ошибку «Uncaught ReferenceError: $ не определен» – Dario

ответ

0

вам нужно использовать editorchange событие: -

editor.on('change', function() { 

JS Bin

+0

ваш пример это не работает онлайн – sara

+0

откройте консоль (F12), и вы wi Посмотрите 'Textarea Change', затем' Saving to the db'. которые являются вашим журналом вашего кода. – BenG

+0

Хорошо, это работает, но почему я должен открыть консоль, чтобы показать результат? – sara

0

Добавить Jquery в своей скрипкой. Если вы откроете консоль в своей скрипке. вы можете увидеть сообщение об ошибке

ceyanebepa.js:45 Uncaught ReferenceError: $ is not defined 

Включите JQuery, и проблема будет решена.

+0

Ок, спасибо, но может дать мне ссылку кода coorect после запуска? – sara

+0

why down vote ??? –

+0

Теперь вы можете проверить. @sara Я только что добавил сценарий jquery в конце тела в вашем коде. –

0

Во-первых: спасибо за каждого тела ответь мне
вторая: проблема решена только оных:

document.forms["id-form"].submit(); 
Смежные вопросы