Javascript 如何在验证后保留表单值
我有以下表格:Javascript 如何在验证后保留表单值,javascript,php,jquery,forms,yii,Javascript,Php,Jquery,Forms,Yii,我有以下表格: <?php echo CHtml::beginForm('','post',array('enctype'=>'multipart/form-data')); ?> <div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'users-form', 'enableAjaxValidation'=>true, )
<?php echo CHtml::beginForm('','post',array('enctype'=>'multipart/form-data')); ?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'users-form',
'enableAjaxValidation'=>true,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'userName'); ?>
<?php echo $form->textField($model,'userName',array('size'=>45,'maxlength'=>255, 'id'=>'in')); ?>
<?php echo $form->error($model,'userName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'password'); ?>
<?php echo $form->passwordField($model,'password',array('size'=>45,'maxlength'=>30, 'id'=>'in')); ?>
<?php echo $form->error($model,'password'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'firstName', array('id'=>'in0')); ?>
<?php echo $form->textField($model,'firstName',array('size'=>45,'maxlength'=>50, 'id'=>'in1')); ?>
<?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'lastName', array('id'=>'in2')); ?>
<?php echo $form->textField($model,'lastName',array('size'=>45,'maxlength'=>50, 'id'=>'in3')); ?>
<?php echo $form->error($model,'lastName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'birthDate', array('id'=>'birth0')); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'publishDate',
'attribute'=>'birthDate',
'model'=>$model,
'language'=>'en',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'fold',
'altFormat'=>'dd-mm-yy',
'dateFormat'=>'yy-mm-dd',
),
'htmlOptions'=>array('id'=>'birth'),)); ?>
<?php echo $form->error($model,'birthDate'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'gender', array('id'=>'in4')); ?>
<?php echo $form->radioButton($model,'gender',array('value'=>'0', 'id'=>'in5')) . '<b id=in6 style="height:20px; color: #000666; font-size: 12pt;
font-weight: bold;"> Male</b><br>'; ?>
<?php echo $form->radioButton($model,'gender',array('value'=>'1', 'id'=>'in7')) . '<b id=in8 style="height:20px; color: #000666; font-size: 12pt;
font-weight: bold;"> Female</b>'; ?>
<?php echo $form->error($model,'gender'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'idCountry'); ?>
<?php $country=Countries::model()->findAll();
$countryList=CHtml::listData($country, 'idCountry' , 'cntName');
$url = CController::createUrl('users/selectedcity');
echo CHtml::activeDropDownList($model,'idCountry', $countryList,
array('empty'=>'choose country','id' => 'idCountry','onchange' =>
"selectedcountry('{$url}', 'idCountry', '#name');",'style'=>'width:300px')); ?>
<?php echo $form->error($model,'idCountry'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'idCity'); ?>
<div id="name"></div>
<?php echo $form->error($model,'idCity'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'securityQuestion'); ?>
<?php $q= Securityquestions::model()->findAll();
$qs=CHtml::listData($q, 'idQuestion' , 'question');
echo CHtml::activeDropDownList($model,'securityQuestion', $qs,array('empty'=>'Select question', 'id'=>'sec')); ?>
<?php echo $form->error($model,'securityQuestion'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'answer'); ?>
<?php echo $form->textField($model,'answer',array('size'=>45,'maxlength'=>255, 'id'=>'in')); ?>
<?php echo $form->error($model,'answer'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>45,'maxlength'=>255, 'id'=>'in')); ?>
<?php echo $form->error($model,'email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'facebookAcc'); ?>
<?php echo $form->textField($model,'facebookAcc',array('size'=>45,'maxlength'=>255, 'id'=>'in')); ?>
<?php echo $form->error($model,'facebookAcc'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'twitterAcc'); ?>
<?php echo $form->textField($model,'twitterAcc',array('size'=>45,'maxlength'=>255, 'id'=>'in')); ?>
<?php echo $form->error($model,'twitterAcc'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'profilePhoto'); ?>
<?php echo CHtml::radioButton('profile',false,array('value'=>'0')) .
'<b style="height:20px; color: #000666;
font-size: 12pt; font-weight: bold;">
Defalut</b><br>'; ?>
<?php echo CHtml::radioButton('profile',false,array('value'=>'1')) .
'<b style="height:20px; color: #000666;
font-size: 12pt; font-weight: bold;">
Upload from here :</b>'; ?>
<?php echo CHtml::activeFileField($model,'profilePhoto',array('width'=>45)); ?>
<?php echo $form->error($model,'profilePhoto'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'website'); ?>
<?php echo $form->textField($model,'website',array('size'=>45,'maxlength'=>500, 'id'=>'in')); ?>
<?php echo $form->error($model,'website'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'telephone'); ?>
<?php echo $form->textField($model,'telephone',array('size'=>45,'maxlength'=>200, 'id'=>'in')); ?>
<?php echo $form->error($model,'telephone'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save', array('id'=>'but')); ?>
<?php echo CHtml::resetButton('Reset', array('id'=>'but')); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
<?php echo CHtml::endForm(); ?>
提交表单后,如果表单有验证错误,它将返回给用户重新填写并更正错误,但是表单没有返回其所有值,因此选中的单选按钮将返回not selected,以及dropDownList of cities,那么如果表单未提交,如何保留表单的所有值?
我希望我的问题是清楚的。在提交时启用验证,如果表单有错误,它将不会提交表单
'clientOptions'=>array(
'validateOnSubmit'=>true, // Required to perform AJAX validation on form submit
),
将此值添加到
$form=$this->beginWidget('CActiveForm', array(
'id'=>'users-form',
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
));
通常的策略是首先在客户端进行验证,如果表单无效,则不提交表单,但知道有时仍然会提交无效表单。一旦提交,它将刷新。如果要保留值,请更新表单并将其作为默认值发送回。这不是我要求的,如果表单由于验证错误返回给用户,我希望保留表单的值。因此,如果用户正确选择了国家和城市,如果表单未提交,则必须返回choosen
$form=$this->beginWidget('CActiveForm', array(
'id'=>'users-form',
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
));