我有这个JQuery函数:
function CheckRequired(event) {
var $form = $(this);
var emptyElements = $form.find('.required').filter(function() {
return this.value === ''
});
if(emptyElements.length > 0) {
event.preventDefault();
emptyElements.addClass("EmptySelect").attr('title', 'This field is required');
//alert(emptyElements.attr("id"));
alert("One or more fields cannot be blank");
return false;
}
}
我使用另一个函数调用此函数:
$(document).ready(function () {
$('form').on('submit', CheckRequired);
});
所以它将在所有表格上调用
它检查类required
然后我在PHP中有这个:
if($_POST) {
}
检查已发布的表单(这是在每页上)
然而return false
并未阻止表单发布
更新
表单提交按钮如下所示:
<input type="submit" name="submit" id="submit" value="Save" onclick="SubmitForm('#form1', '<?php echo $Settings_PathName; ?>/<?php echo $Settings_PagesPath; ?>/companies/customers/company.php?customer=<?php echo $customer["sequence"]; ?>', '.EditCustomer');" class="btn btn-default" />
函数SubmitForm
是:
function SubmitForm(form, postaction, div_name) {
CheckRequired();
$(form).submit(function(event){
event.preventDefault()
//$('#LoadingDiv').show();
var data = $(this).serialize();
$.post(postaction, data)
.success(function(result){
console.log(result);
//$('#LoadingDiv').hide();
$( div_name ).html(result);
$("html, body").animate({ scrollTop: 0 }, "slow");
})
.error(function(){
$( div_name ).html('Error Loading Page');
$("html, body").animate({ scrollTop: 0 }, "slow");
console.log('Error loading page');
console.log(result);
})
return false;
});
}
因此表单位于company.php
上,正在从customers.php
customers.php
有以下代码:
$(document).ready(function() {
$('.EditCustomer').load("<?php echo $Settings_PathName;?>/<?php echo $Settings_PagesPath; ?>/companies/customers/company.php?customer=<?php echo $_GET["seq"]; ?>");
});
因此无需刷新主页即可提交表单,只需使用jquery重新加载
答案 0 :(得分:1)
你可以这样称呼:
$('form').submit(CheckRequired);
或者你可以看到:
你的函数中的 $(this)
不是你想的,它是窗口对象。您必须在函数调用中传递上下文:
function CheckRequired(event, el) {
var $form = $(el); // <---pass the context element here
var emptyElements = $form.find('.required').filter(function() {
return this.value.trim() === ''; //<-----should trim the value.
});
if(emptyElements.length > 0) {
event.preventDefault();
emptyElements.addClass("EmptySelect").attr('title', 'This field is required');
//alert(emptyElements.attr("id"));
alert("One or more fields cannot be blank");
// return false; // it is not needed as you are using event.preventDefault();
}
}
然后你可以这样称呼它:
$('form').submit(function(){
CheckRequired(this);
});
答案 1 :(得分:0)
你添加的最后一点是你的问题。您实际上只是在submit
事件之后才连接click
事件处理程序!这也不允许键盘提交表单。
删除onclick
按钮上的submit
处理程序,然后使用表单上的jQuery事件处理程序。
e.g。
HTML:
<input type="submit" name="submit" id="submit" value="Save" class="btn btn-default" />
如果您需要特定的&#34;额外&#34;来自每个表单的信息(名称等),您可以将它们作为数据属性注入到表单上,并使用jQuery表单对象上的.data()
获取它们。