Chl*_*loe 2 javascript ajax jquery yii2
我有一个表单,我通过AJAX动态加载.我尝试绑定beforeSubmit表单,但似乎失败,因为表单正在提交,浏览器正在加载新页面.当表单在页面中是静态的时,beforeSubmit事件处理程序正在运行,浏览器没有更改位置.我试图改变从$('#emailForm').on('beforeSubmit', function(event) {下面但它没有用.如何beforeSubmit在表格上附上?
view
<div id="emailBody"><!-- Placeholder for email form w/CAPTCHA --></div>
<?#= $this->render('_email_form.php', ['emailModel' => new EmailModel()]) ?>
Run Code Online (Sandbox Code Playgroud)
partial
<?php $form = ActiveForm::begin(['id' => 'emailForm', 'action' => 'send-email', 'method' => 'post', 'enableAjaxValidation' => false, 'options' => ['class' => '']]) ?>
<?= $form->field($emailModel, 'fromName') ?>
Run Code Online (Sandbox Code Playgroud)
JavaScript
jQuery(function() {
$('#emailModal').on('show.bs.modal', function (event) { // load email form w/CAPTCHA
$('#emailBody').load('email-form');
});
$('#emailBody').on('beforeSubmit', '#emailForm', function(event) {
event.preventDefault();
Run Code Online (Sandbox Code Playgroud)
rendered HTML
<div id="emailBody"><form id="emailForm" class="" action="send-email" method="post">
<input type="hidden" name="_csrf" value="aS1LcTJfeU4tXHkuQG4yCjYbDCMfLTEMLEB4EwY4TygGaAAJdBNMPw==">
Run Code Online (Sandbox Code Playgroud)
不是它相关,我使用的是PHP,Bootstrap和Yii框架.
ActiveForm生成初始化它所需的javascript:https://github.com/yiisoft/yii2/blob/49aec24ae1f01d51b4f3cec8e44d44387022d06b/framework/widgets/ActiveForm.php#L201-L206
要在客户端执行此Javascript代码,您必须确保以下内容:
dataType设置设置为html:
"html":以纯文本形式返回HTML; 包含的脚本标记在插入DOM时进行评估.