gpt4 book ai didi

javascript - : How To Have Ajax Validation On A Part Of The Form Showed With An Ajax Event And A Renderpartial? yii

转载 作者:行者123 更新时间:2023-11-28 08:28:10 25 4
gpt4 key购买 nike

我有一个问题,我不知道如何解决它......有很多帖子都有类似的事情,尽管如此,我找不到任何解决方案。

所以我会尝试清楚地揭露我的问题。

我的主页中有一个表单(小部件事件表单)。在此表单上,ajax 验证工作正常。但是,根据此表单上的某些选项(例如检查单选按钮),会出现表单的附加部分。

//start of the form
$form=$this->beginWidget('CActiveForm', array(
'id'=>'evenement-form',
'enableAjaxValidation'=>true,
'clientOptions'=>array('validateOnSubmit'=>true)
)); ?>

// some input
...
// my radioButton with my ajax event.
<?php
echo $form->radioButton($eventForm, 'comboGestionnaireValue', array(
'value'=>'2',
'uncheckValue'=>null,
'onChange'=>CHtml::ajax(array(
'type'=>'POST',
'url'=>@Yii::app()->createUrl('admin/UpdateAjaxFormGestionnaire'),
'data' => array('form'=>serialize($form)),
'update'=>'#gestionnaireCell')) )); ?>

//the rest of my form.
...

因此,当我检查组合框时,它将调用我的 Controller 中的操作。这是 Action :

public function actionUpdateAjaxFormGestionnaire()
{
$eventForm = new eventForm;
$form = $_POST['form'];
if(isset($_POST['ajax']) && $_POST['ajax']==='evenement-form')
{
echo $form::validate($eventForm);
Yii::app()->end();
}

$this->renderPartial('_ajaxContentFormGestionnaire', array(
'form'=>$form,
), false, true);
}

最终呈现出我的部分 View :

<?php
$form = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $form);
$form = unserialize($form);

$eventForm = new EventForm;
?>
<div class="row">
<?php echo $form->labelEx($eventForm,"Nom"); ?>
<?php echo $form->textField($eventForm,"Nom",array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($eventForm,'Nom'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($eventForm,'Prenom'); ?>
<?php echo $form->textField($eventForm,'Prenom',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($eventForm,'Prenom'); ?>
</div>

...

我想对这个渲染的部分进行 ajax 验证...

换句话说:

我猜你明白我有一个表单,它的大小取决于某些选项。

我希望对这些附加字段进行验证,以查看在用户填写表单期间是否正确填写了这些字段

对于我的表格的第一部分,我没有任何问题。当我单击未填写的必填字段,然后单击其他位置时,该字段会变成红色,并在其下方显示一条错误消息。 (如果它是一个数字字段并且其中丢失了一些字符,则相同:))

但是对于附加部分(渲染部分部分),我没有任何验证,当我单击一个字段然后我离开时,任何 POST 操作(在 firebug 中看到)都会发送...然后,任何ajax验证完成...:(

我的所有规则都在我的 eventForm 模型中定义。如果有 Post 事件,我会在我的操作中调用 ajax 验证...

我认为问题在于:当我“离开”该字段时,有任何后操作发送。

请问您有什么建议吗?预先感谢:)

最佳答案

当你写“任何”时,你的意思是“没有”或“无”,对吧?

你有enableAjaxValidation = true,Yii创建一个像这样的javascript:

jQuery('#contact-form').yiiactiveform({'validateOnSubmit':true,'validateOnChange':false,'afterValidate':processResult,'attributes':[{'id':'Contact_firstname','inputID':'Contact_firstname','errorID':'Contact_firstname_em_','model':'Contact','name':'Contact[firstname]','enableAjaxValidation':true,'inputContainer':'div.control-group','status':1},{'id':'Contact_lastname','inputID':'Contact_lastname','errorID':'Contact_lastname_em_','model':'Contact','name':'Contact[lastname]','enableAjaxValidation':true,'inputContainer':'div.control-group','status':1},{'id':'Contact_tags','inputID':'Contact_tags','errorID':'Contact_tags_em_','model':'Contact','name':'Contact[tags]','enableAjaxValidation':true,'inputContainer':'div.control-group','status':1}],'errorCss':'error'});

正如您所看到的,这是一个包含表单中所有字段的列表。当您向表单添加字段时,您还应该将它们添加到此数组中,这样它们也会被发送并进行验证。

我相信您最好禁用enableAjaxValidation并创建一个可以执行相同操作的小函数。

关于javascript - : How To Have Ajax Validation On A Part Of The Form Showed With An Ajax Event And A Renderpartial? yii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176657/

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