javascript - setTimeout只循环一次,不提交表单?

标签 javascript jquery forms submit settimeout

我试图帮助某人使用 jQuery 提交表单。他正在提交,并尝试将一些文本输出到表单中。然而因为提交;他的脚本在显示所有内容之前就被暂停了。我能够制作一个脚本来在提交之前显示他的文本,但我想获得更多技术性,并让它等待提交,以便能够首先读取响应。但是,我的 setTimeout() 没有循环,并且在 preventDefault() 之后表单不会提交 对于问题是什么有什么想法吗?

<强> JSFIDDLE (原始损坏Fiddle)

当前测试代码。我意识到它比应该的要长得多,但我现在已经用不同的方法将这段代码分解了 5 次,这是最基本的并向我展示了所有步骤......但什么也没有。

主要问题是它永远不会进入条件 if ( run === 1 ) { ,就好像 setTimeout 甚至不循环一次一样。

我还可以在使用按钮时运行脚本,而不是像 the example here 这样提交按钮

更新:代码已被修改,现在像应有的那样在 X 秒后发送提交。

 var formElm = $('#replyform');
     positive = $('input[value="Positive"]'),
     negative = $('input[value="Negative"]'),
     response = $('#txt1'),
     run = 0,
     submitnum = 0;

positive.click(function(e)  {
    e.preventDefault();
    submitnum = 1;
    setInterval(submits, 1000);
});

negative.click(function(e) {
     e.preventDefault();
     submitnum = 2;
     setInterval(submits, 1000);

});

function submits() {
    if ( submitnum === 1) {
        submitForm(positive);
    } else if ( submitnum === 2 ) {
        submitForm(negative);
    }
}


function submitForm (e) {
    response.val(e.attr('name') + ' was clicked.');
    if ( run === 1 ) {
        alert('About to submit!');
        e.get(0).form.submit();
    }
    run++
    alert(run);
}

如果您对工作精简代码感兴趣:

这依赖于为按钮设置的类名,以及按钮的类型,而不是提交。

$(".button").click(function() {
    var buttonName = $(this).attr('name'),
    elm = $(this);
    $('#txt1').val( buttonName + ' was clicked.' ); // Add response
    setTimeout(function(){               
         elm.get(0).form.submit(); // Submit form           
    }, 5000); // After 5 seconds
 });

最佳答案

尝试使用

function submitForm (e) {
    response.val(e.attr('name') + ' was clicked.');
    if ( run === 1 ) {
        alert('About to submit!');
        e.get(0).form.submit();
    }
    run++
    alert(run);
}

http://jsfiddle.net/ZUUs7/11/

关于javascript - setTimeout只循环一次,不提交表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23067778/

相关文章:

javascript - 如何为 KnockOutJS 中动态创建的元素设置 id

javascript - 尽管具有不同的 id,但两个不同文件输入表单的图像预览出现在同一 div 中

javascript - 我怎样才能只提供焦点输入?

javascript - 上传从网络摄像头拍摄的图片

php - Silverstripe:将 URL 变量传递给表单操作

javascript - 尝试获取要在 asp.net View 中填充的 dropbox 文件列表

php - 将 PHP 数组传递给 JavaScript 函数不起作用

javascript - 将 HTML 字段集用于 PHP 表单数组

javascript - 页面及其子页面中的排序列表

php - Cake PHP 选择下拉列表