Yii 中的 ajaxOnValidation 和 ajaxSubmitButton 不能一起工作

发布于 2024-12-29 06:11:29 字数 1351 浏览 2 评论 0原文

我在 Yii 的 iframe 中显示了一个 jQuery 对话框弹出表单。如果表单通过验证,则需要保存并关闭,否则需要显示错误。但是,虽然 validateOnChange 正在工作,但 validateOnSubmit 却不起作用 - 单击提交仅返回视图的输出,而不是错误(或空数组)。我不太确定从哪里开始修复它。

我在 beginWidget() 调用中有这些选项:

'enableAjaxValidation'=>true,
'clientOptions' => array(
    'validateOnSubmit'=>true,
    'validateOnChange'=>true,
    'validateOnType'=>false,
),

我正在使用此代码生成按钮:

CHtml::ajaxSubmitButton('Submit', 'enter', array('success' => 'afterValidate()'));

我发现了一些其他链接讨论这两个选项不能一起工作的问题:< a href="https://stackoverflow.com/questions/6348581/yii-ajaxsubmitbutton-with-fields-validation">带有字段验证的 Yii ajaxSubmitButton() 和 http://code.google.com/p/yii/issues/详细信息?id=2008。但是,我不确定如何处理最后一个链接中建议的修复:

function afterValidate(form, data, hasError){
  if (!hasError) {
    $.ajax({
        url: '{$postUrl}',
        type: 'POST',
        dataType: 'json',
        data:jQuery(this).parents("form").serialize()
    })
    .done(function ( response ) {
      // my successhandler
    })
    .fail(function ( xhr, status ) {
      // my error handler
    });
    return false;
  }
}

回调函数正在被调用,但总是失败,无论数据是否有效。

那么,如何在 Yii 中实现 jQuery 对话框表单呢?

I have a jQuery dialog popup form shown within an iframe on Yii. If the form validates, it needs to save and close, otherwise it needs to show with the errors. However, while the validateOnChange is working, the validateOnSubmit doesn't - clicking on submit just returns the output of the view, instead of the errors (or an empty array). I'm not really sure where to start with fixing it.

I have these options in the beginWidget() call:

'enableAjaxValidation'=>true,
'clientOptions' => array(
    'validateOnSubmit'=>true,
    'validateOnChange'=>true,
    'validateOnType'=>false,
),

And I am using this code to generate the button:

CHtml::ajaxSubmitButton('Submit', 'enter', array('success' => 'afterValidate()'));

I found a couple of other links talking about the problem of these two options not working together at: Yii ajaxSubmitButton() with fields validation and
http://code.google.com/p/yii/issues/detail?id=2008. However, I'm not sure what to do with the suggested fix in the last link:

function afterValidate(form, data, hasError){
  if (!hasError) {
    $.ajax({
        url: '{$postUrl}',
        type: 'POST',
        dataType: 'json',
        data:jQuery(this).parents("form").serialize()
    })
    .done(function ( response ) {
      // my successhandler
    })
    .fail(function ( xhr, status ) {
      // my error handler
    });
    return false;
  }
}

The callback function is being called, but always fails, whether the data is valid or not.

So, how do I implement a jQuery dialog form in Yii?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文