Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在HTML中使用onBlur从服务器调用flask函数?_Javascript_Flask_Flask Socketio - Fatal编程技术网

Javascript 如何在HTML中使用onBlur从服务器调用flask函数?

Javascript 如何在HTML中使用onBlur从服务器调用flask函数?,javascript,flask,flask-socketio,Javascript,Flask,Flask Socketio,我对Flask是新手,我正在尝试制作一个简单的注册页面。这是密码- {% extends 'layout.html' %} {% block body %} <div class="container"> <form method="post" action="{{ url_for('signup') }}"> <label for="user">Username </label>

我对Flask是新手,我正在尝试制作一个简单的注册页面。这是密码-

{% extends 'layout.html' %}
{% block body %}

<div class="container">
        <form method="post" action="{{ url_for('signup') }}">

                <label for="user">Username </label>
                <input type="text" id="user" name="user" onblur='NameCheck()'>

               <i id='acceptIC' class="fas fa-check-circle"></i>


                <label for="pas">Password </label>
                <input type="password" id="pas" name="pas">


                <label for="mail">Email ID </label>
                <input type="email" id="mail" name="mail">

            <button type="submit">Signup</button>
        </form>
</div>

{% endblock %}
{%extends'layout.html%}
{%block body%}
用户名
密码
电子邮件ID
报名
{%endblock%}

我希望在用户名失去焦点时,在用户名旁边显示一个字体很棒的图标,如果用户名可用(MongoDB中的数据库),则该图标为绿色,如果用户名不可用,则为红色

这可以通过在onBlur调用中使用flask socketio实现,比如-

function NameCheck(data) {
if (data !== '') {
    sock.emit('name_check', data);
    sock.on('responded', function (msg) {
        if (msg) {
            document.getElementById('acceptIC').style['display'] = 'flex';
           }
    });
}
}
瓶内socketio呼叫

@socketio.on('name_check')
def handle_name(data):
    socketio.emit('responded', Mongo.checkUser(data))
在哪里

Mongo.checkUser(data)

这是您所需的功能。返回bool值

onblur
是JavaScript,与Flask无关。您基本上需要为“onblur”设置JavaScript事件处理程序。好的,我可以从中触发外部Python脚本吗?如果没有,还有什么选择?当然有。提交html POST表单时,需要设置Flask路由来处理它。类似于
@app.route(“signup”,methods=['POST'])
。阅读“访问请求数据”部分也没有问题。只要使用Ajax调用您的路线,您就可以了。