我通过在div中动态加载页面的功能来增加我的系统,换句话说,页面的中心区域会更新。为此,我使用JQuery。但即使我也有一个问题,那就是当提交相同的FORM时,必须通过JQueryAjax加载下一个页面来发送帖子,以使用第二个页面上的数据。
有趣的是我没有被选中。Submit()始终且仅在一种情况下提交FORM。我将在以下两种情况下发布HTML:
在下面的html代码中,显示了我在表单.submit()中创建的警告测试。
<form id="form" accept-charset="utf-8" name="frmPadrao" method="POST" action="HTTP://localhost/fwsibe/index.php/acesso/listarSistemasValidar">
<br>
<fieldset id="tabelainfo" style="width: 560px;">
<legend style="color: #083C06;">
<b>Dados</b>
</legend>
<br>
<table id="tabelainfo">
<tbody>
<tr>
<td>
<b>SIBE:* </b>
</td>
<td>
<select name="slSibe">
</td>
</tr>
<tr>
<td>
<br>
</td>
</tr>
<tr>
<td colspan="2">
<input class="button" type="submit" value="Confirmar" name="btConfirmar">
</td>
</tr>
</tbody>
</table>
</fieldset>
<br>
<br>
</form>
在第二个代码警告中。Submit()未显示,或未被识别提交表单:
<form id="form" accept-charset="utf-8" name="frmPadrao" method="POST" action="HTTP://localhost/sibe/index.php/almembal/motivoajustealm/pesquisar">
<br>
<fieldset id="tabelainfo" style="width: 560px;">
<legend style="color: #083C06;">
<b>Filtrar por:</b>
</legend>
<br>
<table id="tabelainfo">
<tbody>
<tr>
<td>
<b>SubTipo Produto:* </b>
</td>
<td>
<select name="slSubTipo">
</td>
</tr>
<tr>
<td>
<br>
</td>
</tr>
<tr>
<td colspan="2">
<input class="button" type="submit" value="Confirmar" name="btConfirmar">
</td>
</tr>
</tbody>
</table>
</fieldset>
<br>
<br>
<div>
<a title="" onclick="window.open('HTTP://localhost/sibe/index.php/almembal/motivoajustealm/incluir', '_blank', 'width=800,height=600,scrollbars=yes,status=yes,resizable=yes,screenx=0,screeny=0');" href="javascript:void(0);">Incluir</a>
</div>
<br>
<table id="tabelainfo">
<tbody>
<tr id="corpotabela">
<td align="center">Não existem Motivos de Ajuste cadastrados para esta pesquisa.</td>
</tr>
</tbody>
</table>
</form>
在JQuery脚本下面,该脚本已经在页面的HEAD中正确初始化,此外,已经为其他环境测试为$(this)。点击,一切正常。
$(document).ready(function() {
$("#form").submit(function() {
alert("SUBMIT FORM");
// alert($(this));
// console.log($(this));
// $.post($(this).attr("action"), $(this).serialize(), function(data) {
// $("#divCentral").html(data);
// });
// return false;
});
});
你能帮我找到导致这个错误的原因吗。是否JQuery无法识别Submit()?
编辑:
我已经发现了问题的根源。看起来,当为jquery ajax加载的页面绘制组件时,event.submit()不起作用,但当为默认值加载页面时,该事件起作用。
问题是,是由Ajax加载的,JQuery函数无法识别它。我正在创建一个函数,通过向文件发出Ajax请求来加载模板的中心页。我有两个函数,第一个只是用于测试,第二个是我正在创建的,用于使用$_POST。目前JQuery功能很好:
function carregaUrl(url) {
//alert("carregaUrl=" + url);
$("#divCentral").load(url);
console.log($('form').attr('name'));
}
function carregaUrl2(url) {
var data = $("form").serialize();
$.ajax({
type: "POST",
url: url,
data: data
}).done(function(data) {
$("#divCentral").html(data);
});
}
这里发生的事情是,处理程序触发,启动警报,然后发生表单提交,有效地重新加载了页面。
如果您希望阻止此提交并停留在当前页面上,或者向要进行此提交的页面添加警报,则需要事件处理程序返回false。
如果你想停留在当前页面上,请尝试以下操作:
jQuery(function($){
function formSubmit(form) {
$.post(form.attr('action'), form.serialize(), function(data){
$("#some-outer-container-with-form").html(data);
});
$("#form").submit(function(){ return formSubmit(form) }); //we need to rebind
return false;
}
$("#form").submit(function(){ return formSubmit( $(this) ) });
});