在提交之前替换

时间:2013-12-13 13:33:32

标签: jquery

当我将标签传递给xml解析器并且没有正确的标签引发异常时,我不得不用<br> <br/>替换标签。

我在提交之前尝试过这个:

$('form#mail').submit(function(e){
    e.preventDefault();
    $(".note-editable br").replaceWith('<br/>');
    $(this).submit();
});

但会导致错误并且不会触发提交:

Uncaught RangeError: Maximum call stack size exceeded

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

这里有一个无限循环:

$(this).submit();

将脚本指向:

$('form#mail').submit(function(e){ ...

<强>解决方案:

$('form#mail').submit(function(e){
    //e.preventDefault(); - don't do this
    $(".note-editable br").replaceWith('<br/>');
    //$(this).submit(); - or this
});

如果您要提交表单,并将浏览器发送到另一个页面,为什么还需要在当前页面上进行DOM更改?

答案 1 :(得分:0)

您正在循环使用该功能。您可以阻止默认提交发生,然后再次提交表单,这又会被阻止。

你可以这样做:

$('input[type="submit"]').on('click', function(e){
    e.preventDefault();
    $(".note-editable br").replaceWith('<br/>');
    $('form#mail').submit();
});