gpt4 book ai didi

javascript - 如何在 Yii 中绑定(bind)到 AJAX 加载表单上的 beforeSubmit 事件?

转载 作者:行者123 更新时间:2023-12-01 02:27:57 25 4
gpt4 key购买 nike

我有一个通过 AJAX 动态加载的表单。我尝试在表单上绑定(bind) beforeSubmit ,但随着表单正在提交并且浏览器正在加载新页面,它似乎失败了。当表单在页面中处于静态时,beforeSubmit 事件处理程序正在工作,并且浏览器不会更改位置。我尝试将 $('#emailForm').on('beforeSubmit', function(event) { 更改为下面的内容,但没有成功。如何附加 beforeSubmit 表单上?

查看
        <div id="emailBody"><!-- Placeholder for email form w/CAPTCHA --></div>
<?#= $this->render('_email_form.php', ['emailModel' => new EmailModel()]) ?>
部分
<?php $form = ActiveForm::begin(['id' => 'emailForm', 'action' => 'send-email', 'method' => 'post', 'enableAjaxValidation' => false, 'options' => ['class' => '']]) ?> 
<?= $form->field($emailModel, 'fromName') ?>
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();
渲染的 HTML
<div id="emailBody"><form id="emailForm" class="" action="send-email" method="post">
<input type="hidden" name="_csrf" value="aS1LcTJfeU4tXHkuQG4yCjYbDCMfLTEMLEB4EwY4TygGaAAJdBNMPw==">

这并不相关,我正在使用 PHP、Bootstrap 和 Yii 框架。

最佳答案

ActiveForm 在此生成初始化所需的 JavaScript:https://github.com/yiisoft/yii2/blob/49aec24ae1f01d51b4f3cec8e44d44387022d06b/framework/widgets/ActiveForm.php#L201-L206

要在客户端执行此 Javascript 代码,您必须确保以下几点:

  1. 确保注册的 JS 是响应的一部分,如果您使用 renderAjax() 渲染 View ,则应该是这种情况。在 Controller 中。
  2. 执行响应中包含的Javascript。根据JQuery documentation这是 ajax 请求的情况,如果 dataType 设置设置为 html:

    "html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.

关于javascript - 如何在 Yii 中绑定(bind)到 AJAX 加载表单上的 beforeSubmit 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36414968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com