我试图用jQuery提交表单帮助某人。他正在提交,并尝试将一些文本输出到表单。但是因为提交;在显示所有内容之前,他的剧本已停止。我能够在提交之前制作一个脚本来显示他的文本,但我希望获得更多技术,并让它等待提交,以便能够首先阅读响应。但是,我的setTimeout()
没有循环播放,并且在preventDefault()
之后表格不会提交任何有关问题的想法?
当前测试代码。我意识到它应该比它长得多,但我现在用不同的方法将这段代码打破了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
});
答案 0 :(得分:1)
尝试使用
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);
}
答案 1 :(得分:1)