如何阻止表单使用jquery提交?
我尝试了所有内容 - 请参阅我在下面尝试的3种不同选项,但这一切都行不通:
$(document).ready(function() {
//option A
$("#form").submit(function(e){
e.preventDefault();
});
//option B
$("#form").submit(function(e){
stopEvent(e);
});
//option C
$("#form").submit(function(){
return false;
});
});
可能出现什么问题?
更新 - 这是我的HTML:
<form id="form" class="form" action="page2.php" method="post">
<!-- tags in the form -->
<p class="class2">
<input type="submit" value="Okay!" />
</p>
</form>
这里有什么不对吗?
答案 0 :(得分:204)
两件事情突出:
form
。而是指
删除#。 e.preventDefault
也是正确的JQuery语法,例如
//option A
$("form").submit(function(e){
e.preventDefault();
});
选项C也应该有用。我不熟悉选项B
一个完整的例子:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function() {
//option A
$("form").submit(function(e){
alert('submit intercepted');
e.preventDefault(e);
});
});
</script>
</head>
<body>
<form action="http://google.com" method="GET">
Search <input type='text' name='q' />
<input type='submit'/>
</form>
</body>
</html>
答案 1 :(得分:25)
您可能在页面上使用了少量表单并使用$('form')。submit()将此事件添加到页面上第一次出现的表单中。请改用类选择器,或尝试这样:
$('form').each(function(){
$(this).submit(function(e){
e.preventDefault();
alert('it is working!');
return false;
})
})
或更好的版本:
$(document).on("submit", "form", function(e){
e.preventDefault();
alert('it works!');
return false;
});
答案 2 :(得分:17)
要防止默认/阻止表单提交,请使用
e.preventDefault();
停止事件冒泡使用
e.stopPropagation();
为防止表单提交,“return false”也应该起作用。
答案 3 :(得分:5)
我也有同样的问题。我也尝试了你尝试过的东西。然后我改变我的方法不使用jquery,而是在表单标签中使用“onsubmit”属性。
<form onsubmit="thefunction(); return false;">
有效。
但是,当我试图仅在“thefunction()”中设置false返回值时,它不会阻止提交过程,所以我必须把“return false”。在onsubmit属性中。所以,我得出结论,我的表单应用程序无法从Javascript函数获取返回值。我对此一无所知。
答案 4 :(得分:3)
我遇到了同样的问题,我解决了这个问题(不优雅,但有效):
$query = $em->createQuery("
SELECT a, k
FROM XyzTestBundle:MyPet a
LEFT JOIN a.animalKind k
");
在我看来,它有优势,你可以随时恢复这种情况:
$('#form').attr('onsubmit','return false;');
答案 5 :(得分:1)
当我使用不带属性<form>
的{{1}}标记并直接在jquery中通过其标记名称调用它时,它适用于我。
你的代码在html文件中:
id="form"
并在Jquery脚本中:
<form action="page2.php" method="post">
答案 6 :(得分:1)
将事件附加到Submit元素而不是form元素。 例如,在您的html中这样做
$('input[type=submit]').on('click', function(e) {
e.preventDefault();
});
答案 7 :(得分:1)
您可以简单地检查表单是否有效,如果是,请运行提交逻辑,否则显示错误。
HTML
<form id="form" class="form" action="page2.php" method="post">
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="text" class="check-validity" value="" />
<input type="submit" value="Okay!" />
</form>
JavaScript
$(document).ready(function () {
var isFormValid = true;
function checkFormValidity(form){
isFormValid = true;
$(form).find(".check-validity").each(function(){
var fieldVal = $.trim($(this).val());
if(!fieldVal){
isFormValid = false;
}
});
}
//option A
$("#form").submit(function (e) {
checkFormValidity("#form");
if(isFormValid){
alert("Submit Form Submitted!!! :D");
}else{
alert("Form is not valid :(");
}
e.preventDefault();
});
});
答案 8 :(得分:0)
$('#form')
查找包含id="form"
的元素。
$('form')
查找表单元素
答案 9 :(得分:0)
您忘记了表单ID,它可以正常工作
$('form#form').submit(function(e){
e.preventDefault();
alert('prevent submit');
});
答案 10 :(得分:0)
// Prevent form submission
$( "form" ).submit(function( event ) {
event.preventDefault();
});
从这里开始:https://api.jquery.com/submit-selector/(关于提交类型的有趣页面)
答案 11 :(得分:0)
这似乎也可行,并且可能稍微简单一些:
$('#Form').on('submit',function(){
return false;
})
答案 12 :(得分:0)
使用jQuery,您可以执行以下操作:
1-将本机表单提交事件与“提交”按钮一起使用,同时防止事件触发,然后
2-检查表单有效属性 可以实现如下:
1- HTML:
<form id="yourForm">
<input id="submit" type="submit" value="Save"/>
</form>
2- Javascript
$("form").on("submit", function (e) {
e.preventDefault();
if ($(this).valid()) {
alert('Success!');
}
});
答案 13 :(得分:0)
缺少信息如何防止表单提交然后恢复情况,i。 e.允许稍后提交表单。
这是一个例子:
var savebtn_clicked;
$('form#commentform').submit( function(e) {
return savebtn_clicked;
});
$('#savebtn').click( function() {
savebtn_clicked = true;
$('#form#commentform').submit();
});
就我而言,每个按钮都会触发表单。使用上面的代码,我可以控制哪个按钮允许提交表单。