我正在使用jQuery提交我的表单变量,我试图阻止表单通过常规方式提交(单击提交按钮或按其中一个字段输入)
我有这个:
$('#form').submit(function(){
event.preventDefault();
});
但似乎无法正常工作,我的表单仍在提交,请访问process.php页面。
答案 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);