【问题标题】:Display a php function in jquery onblur在 jquery onblur 中显示一个 php 函数
【发布时间】:2014-03-22 20:30:41
【问题描述】:

我有html代码:

<input type="text" id="email" onblur="<?php validate_email_input($email); ?>" />

现在我想在 onblur 时显示:

function validate_email_input($email)
{
    if(!prawidlowy_email($email)) {
        throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Kombinacja znaków w polu e-mail jest niepoprawna!</p></div>');
    }
    elseif(strlen($email) > 44) {
        throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Pole email musi zawierać maksymalnie 44 znaki!</p></div>');
    }
    elseif(strlen($email) < 6) {
        throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Pole email musi zawierać minimum 6 znaków!</p></div>');
    }
}

为了在同一页面上显示它,但在名为 okno_bledu_rejestracji 的 div 中,我使用以下 HTML 代码:

<div id="okno_bledu_rejestracji">validate error box</div>

还有这个JQ代码,在点击表单的提交按钮后显示,它的名字是#zarejestruj_sie:

$(document).ready( function() {
    $("#zarejestruj_sie").click( function() {

            $.post( $("#formularz_rejestracji").attr("action"), $("#formularz_rejestracji :input").serializeArray(), function(info) {
                $("#okno_bledu_rejestracji").empty();
                $("#okno_bledu_rejestracji").html(info);
            });

            $("#formularz_rejestracji").submit( function() {
                return false;
            });         
    });
});

现在我想显示一个php函数:

function validate_email_input($email)
    {
        if(!prawidlowy_email($email)) {
            throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Kombinacja znaków w polu e-mail jest niepoprawna!</p></div>');
        }
        elseif(strlen($email) > 44) {
            throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Pole email musi zawierać maksymalnie 44 znaki!</p></div>');
        }
        elseif(strlen($email) < 6) {
            throw new exception('<div id="#okno_bledu_rejestracji" style="background: #FBE3E4 url('.$errw.') no-repeat;background-position: 7px 7px;color:#E64D19;"><p>Pole email musi zawierać minimum 6 znaków!</p></div>');
        }
    }

在onblur输入后名为okno_bledu_rejestracji的div中,id为email。

我竖起大拇指寻求帮助。谢谢。

【问题讨论】:

标签: php jquery validation input onmouseup


【解决方案1】:

这“通常”是不可能的。在将页面提供给客户端之前,服务器会执行 PHP。客户端不理解你的 PHP 代码。

话虽如此,有一种方法可以用 PHP 实现这一点。使用 Ajax,可以使用电子邮件查询服务器并从服务器获得响应。通常,您会收到 JSON 格式的响应。

使用 jQuery,下面的代码可以做到这一点:

$(document).ready( function() {
    $("#email").mouseup(function() {
        var email = $(this).val(),
            url = "api/myfunction?email=" + email;

        $.get(url, function(data) {
            // We succeeded!  data contains your response.
        });
    });
});

【讨论】:

    【解决方案2】:

    您需要了解客户端和服务器端。 这两者之间的区别在您的网络编程中非常重要。

    我建议您了解一些关于 Ajax 的知识。 在服务器端,您需要一个文件,如 ajax.php,它将电子邮件作为 GET 参数并返回带有响应的 JSON。 鼠标打开时,jquery 将调用该 ajax 页面并获取他的答案并将其放入一个 DOM 元素中,比如说一个 Div。

    http://learn.jquery.com/ajax/

    祝你好运!

    另外:如果您正在检查电子邮件的长度和格式,您可能会期待您的代码的 javascript 翻译。

    【讨论】:

    • 是的,我现在正在检查。非常感谢。但我希望有人也会在盘子上给我一个答案。如果有什么...再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 2021-04-02
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    相关资源
    最近更新 更多