【问题标题】:How to call javascript function in callback function of codeigniter controller?如何在codeigniter控制器的回调函数中调用javascript函数?
【发布时间】:2023-03-14 20:29:01
【问题描述】:

我想将javascript函数调用到codeigniter控制器的回调函数中。

控制器:回调函数

public function email_exist($id) {
        $this->db->where('email', $id);
        $query = $this->db->get('login');
        if (!$query->num_rows() > 0) {

            $this->form_validation->set_message(__FUNCTION__, $this->email_validate());          
            return FALSE;
        } else {
            return TRUE;
        }

Javascript:警报功能

function email_validate(){
    alert('Invalid Email Id');
}

遇到未捕获的异常

类型:错误

消息:调用未定义的方法 Login::email_validate()

文件名:C:\wamp64\www\CodeIgniterProject1\application\controllers\login.php

行号:46

login_form.php

<?php echo validation_errors(); ?>
<?php echo form_open_multipart(); ?>
<form name="form">
    <div class="loginform">
        <?php echo form_label('LOGIN', 'login'); ?>
    </div>
    <div class="email">
        <?php echo form_input('email', 'E-MAIL', set_value('email')); ?>
    </div>
    <div class="password">
        <?php echo form_password('password', 'PASSWORD', set_value('password')); ?>
    </div>
    <div class='checkbox'>
        <?php
        echo form_checkbox(array(
            'name' => 'remember',
            'id' => 'remember',
            'value' => 'REMEMBER ME',
            'checked' => FALSE,
            'style' => 'margin:1px'
        )) . form_label('REMEMBER ME', 'remember');
        ?>
    </div>
    <div class='btnlogin'>
        <?php echo form_submit('login', 'LOGIN'); ?>
    </div>
</form>

【问题讨论】:

  • 你不能那样做。 php 中有很多库用于电子邮件验证。
  • 其实 css 不工作,这就是我尝试使用 js 的原因
  • 如果您想在电子邮件无效时将css修改为字段,只需进行前端验证即可。无需理会控制器。
  • 好的,但我不知道该怎么做?让我试试。我不知道如何为validation_errors提供css
  • 创建两个 css 类:errorvalid 以及使用 jQuery 的 js:$(this).RemoveClass('valid').AddClass('error')

标签: php codeigniter


【解决方案1】:

你不能在 Codeigniter 中这样做,使用 Codeigniter 默认表单验证库

View here

如果您想为验证错误添加 css,请尝试 set_error_delimeters()

如果你有引导然后使用

警报警告-危险

类,否则创建一个类

$this->form_validation->set_error_delimiters('<div class="alert alert-danger">', '</div>');

see

[其他建议]

除了把所有的错误都放在最上面,你也可以试试

<?php 
echo form_error('email');
form_input('email', 'E-MAIL', set_value('email'));
 ?>

其他选项是jquery验证或js验证,将js写入视图或外部.js文件

<?php
    data = array(
            'name'          => 'username',
            'id'            => 'username', //use the id for jquery validation $('#username').on('blur', function() { });
            'value'         => 'johndoe',
            'maxlength'     => '100',
            'size'          => '50',
            'style'         => 'width:50%'
            'onBlur' => 'email_validate();' //use this for javascript validation
    );

    echo form_input($data);
?>

我无法发表评论,这就是为什么发布为答案

【讨论】:

  • 谢谢,但我做了这样的事情: 和 CSS 样式 #validation_errors{ color: red; }
  • 在我们看来代码很多,只需添加 $this->form_validation->set_error_delimiters('
    ', '
    ');在控制器中(在验证检查中)
猜你喜欢
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多