dtkl55257 2014-09-25 18:36
浏览 49
已采纳

在Yii上使用JavaScript验证

I want to add some JavaScript validation to my form of password creation.

I have the following as javascript

function Validation(){
    var password = document.getElementById('password').value;
    var error = document.getElementById('error');

    if((/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]+$/).test(password) == false){
        error.html('error');
    }
}

I have the following code in my _form.php for the user creation

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'users-form',
    'htmlOptions'=>array('onsubmit'=>'return Validation()'),
    // Please note: When you enable ajax validation, make sure the corresponding
    // controller action is handling ajax validation correctly.
    // There is a call to performAjaxValidation() commented in generated controller code.
    // See class documentation of CActiveForm for details on this.
    'enableAjaxValidation'=>false,
)); ?>

    <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'=>20,'maxlength'=>20)); ?>
        <?php echo $form->error($model,'username'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'password'); ?>
        <?php echo $form->passwordField($model,'password',array('size'=>60,'maxlength'=>255)); ?>
        <?php echo $form->error($model,'password'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>
    <div id="error">

    </div>

<?php $this->endWidget(); ?>

Now i do have my script imported and even when i put a simple alert('hello') it doesnt work when i press create.

Also i know the validation wont work properly since i am hashing the password. How i can validate it before it becomes hash.

  • 写回答

1条回答 默认 最新

  • dq_1984 2014-09-26 05:29
    关注

    You can do it two way

    1) With form htmlOptions

    <?php Yii::app()->clientScript->registerScript('someScript', "
    
    validate = function(){
    
            alert("Your Validation Function");
            return false;
    }
    
    ");
    ?>
    <?php $form=$this->beginWidget('CActiveForm', array(
        'id'                    =>  'user-form',
        'enableAjaxValidation'  => false,
            'htmlOptions'       => array(
                                   'onsubmit'=>"return validate();",
                                 ),
    )); ?>
    

    2) With Jquery submit method

    <?php Yii::app()->clientScript->registerScript('someScript', "
    
    $('#user-form').submit(function() {
        alert("Your validation");
    });
    
    
    ");
    ?>
    <?php $form=$this->beginWidget('CActiveForm', array(
        'id'                    =>  'user-form',
        'enableAjaxValidation'  => false,
    )); ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计