防止表单通过event.preventDefault()提交;不工作

时间:2013-02-24 11:06:04

标签: jquery forms submit

我正在使用jQuery提交我的表单变量,我试图阻止表单通过常规方式提交(单击提交按钮或按其中一个字段输入)

我有这个:

$('#form').submit(function(){
    event.preventDefault();
});

但似乎无法正常工作,我的表单仍在提交,请访问process.php页面。

6 个答案:

答案 0 :(得分:11)

如果您唯一需要做的是阻止默认操作,则可以提供false而不是功能:

$('#form').submit(false);

答案 1 :(得分:7)

尝试return false代替event.preventDefault()或接受event作为您的函数的参数。

$('#form').submit(function(event){
  event.preventDefault();
});

不确定为什么有些人认为这不再适用,但这里有一个例子显示它仍然有效。

https://jsfiddle.net/138z5atq/

注释掉事件处理程序,它会发出警报。

关于stopPropagation()stopImmediatePropagation(),它们不会阻止表单提交。他们只是阻止事件冒泡dom。

答案 2 :(得分:5)

其他方式是:

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

   //some code here

   return false;
});

答案 3 :(得分:1)

我无法获得发布的答案,只能提供假的选项。我发现这可行:

$(document).on('submit', '#form', function(event){
    event.preventDefault();
});

答案 4 :(得分:0)

我还注意到(至少在Chrome上),如果您在Promise或类似这样的异步函数之后运行e.preventDefault():

<script src="dist/datepicker.min.js"></script>

此先前版本无效。您必须在像这样的任何其他代码之前理想地声明它:

submitEvent(e) {

    this.sendData(formData).then((json) => {
        ...
    })
    .catch((error) => {
        ...
    });

    e.preventDefault(); // OPS. Executed but not working ????!!!
}

答案 5 :(得分:0)

为了扩展 steveukx 的回答,我通常喜欢做这样的事情:

function pairwiseDifference($arry) 
{
    $n = count($arry) - 1;  // you can add the -1 here
    $diff = 0;
    $result = array();

    for ($i = 0; $i < $n; $i++) 
   { 
       // absolute difference between 
       // consecutive numbers 
       $diff = abs($arry[$i] - $arry[$i + 1]); 
       echo $diff." ";
       array_push($result, $diff);   // use array_push() to add new items to an array
   }

   return $result;  // return the result array
}

$arry = array(20,10,10,50);
echo "<br> Percent of commisions are: ";

// this echos 10,0,40 and assigns whatever your function returns 
// to the variable $diffArray
$diffArray = pairwiseDifference($arry);