Forms Backbone.js和表单输入模糊

Forms Backbone.js和表单输入模糊,forms,events,backbone.js,textbox,blur,Forms,Events,Backbone.js,Textbox,Blur,我基本上是个新手。我正在向mysql提交表单数据 我有一个特殊的输入框,用户在其中键入他或她的电子邮件地址作为用户名。 目前,我可以检查客户端的所有输入字段(用户、通行证、地址、电话等) 另一方面,在按钮上使用事件,加载模型,使用PHP将数据放入数据库。 这工作得很好,经过测试。后端验证工作正常,并提供给 必要时打开浏览器 现在,我想在写入记录之前检查后端的loginname字段(我知道我可以在最终提交时将其捕获在后端,但我想在这里执行)。如果用户已经有一个具有相同电子邮件地址的帐户,我希望捕获

我基本上是个新手。我正在向mysql提交表单数据

我有一个特殊的输入框,用户在其中键入他或她的电子邮件地址作为用户名。 目前,我可以检查客户端的所有输入字段(用户、通行证、地址、电话等) 另一方面,在按钮上使用事件,加载模型,使用PHP将数据放入数据库。 这工作得很好,经过测试。后端验证工作正常,并提供给 必要时打开浏览器

现在,我想在写入记录之前检查后端的loginname字段(我知道我可以在最终提交时将其捕获在后端,但我想在这里执行)。如果用户已经有一个具有相同电子邮件地址的帐户,我希望捕获该客户端。问题是,当我离开loginname字段时,我似乎找不到一种方法来捕捉这种模糊(或onblur或更改我使用的任何内容),这样我就可以(在视图的渲染中,我所能想到的就是)离开,再次使用PHP并发回一个标志“新建”或“现有”

谷歌开发者工具中没有错误

    define([
   'jquery',
   'underscore',
   'backbone',
   'lib/jquery-migrate-1.2.1',
   'models/RegisterModel',
   'text!templates/RegisterTemplate.html',
   'lib/jquery.maskedinput-1.0',
   'lib/bootstrap-acknowledgeinput.min',
   'lib/jqBootstrapValidation'
    ], function($, _, Backbone, jQueryMigrate, RegisterModel, RegisterTemplate,   
        MaskedInput,Ack, jqAck){

   var RegisterView = Backbone.View.extend({

    el: $("#container"),
    events: {
          'click .btn-primary': 'saveClient',
          'focusout .loginname': 'usercheck'
       },

     usercheck: function() {     //** not working
         console.log("usercheck detected");
         alert("Alerts suck.");
         },

     render: function(){

    //Since our template has dynamic variables in it, we need to compile it
    var compiledTemplate = _.template( RegisterTemplate, this.model );
    this.$el.html(compiledTemplate); //Replaces EVERYTHING inside the <div 
                                           id="container">
    this.$('#phone').mask('(999) 999-9999');
        this.$('#phone2').mask('(999) 999-9999');
    this.$('#zip').mask('99999');

        $(function () {     //**  working
           $("input,select,textarea").not("[type=submit]").jqBootstrapValidation(); 
         });

    $('.loginname').live("click", function () {    //** not working
       alert('AHHHHHH!');
     });

        $().acknowledgeinput({        // ** this works fine
            success_color: '#00FF00',
        danger_color: '#FF0000',
         update_on: 'keyup'
        });
定义([
“jquery”,
“下划线”,
"骨干",,
“lib/jquery-migrate-1.2.1”,
“模型/注册表模型”,
“text!templates/RegisterTemplate.html”,
'lib/jquery.maskedinput-1.0',
'lib/bootstrap ackknowledgeInput.min',
“lib/jqBootstrapValidation”
],函数($,),主干,jQueryMigrate,RegisterModel,RegisterTemplate,
MaskedInput,Ack,jqAck){
var RegisterView=Backbone.View.extend({
el:$(“集装箱”),
活动:{
'click.btn primary':'saveClient',
'focusout.loginname':'usercheck'
},
usercheck:函数(){/**不工作
日志(“检测到用户检查”);
警报(“警报吮吸”);
},
render:function(){
//因为我们的模板中有动态变量,所以我们需要编译它
var compiledTemplate=ux0.template(RegisterTemplate,this.model);
此.el.html(compiledTemplate);//替换
这个.$(#phone').mask((999)999-9999');
此.$(“#phone2”).掩码(“(999)999-9999”);
这个.$('#zip')。面具('99999');
$(函数(){/**正在工作
$(“输入,选择,文本区域”).not(“[type=submit]”)。jqBootstrapValidation();
});
$('.loginname').live(“单击”,函数(){/**不工作
警惕('ahhhhh!');
});
$().acknowledgeinput({//**这可以正常工作
成功颜色:“#00FF00”,
危险颜色:'#FF0000',
更新内容:'keyup'
});
**我在Chrome中查看了blur事件,查找名称为/id=loginname的输入

HTML我确实看到了id为的ElMent的模糊(Chrome说它是input#loginname) 确实附加了模糊事件。我稍微更改了我的代码,但它似乎仍然没有触发。我不知道主干是简单的还是其中之一 “此和范围”问题:)


不能
保持空白!
新客户注册:
用户ID(电子邮件)
等
活动:{
'click.btn primary':'saveClient',
“focusout#input.loginname”:“userCheck”
//“blur input.loginname”:“userCheck”
},
用户检查:函数(e){
日志(“检测到用户检查”);
警报(“警报吮吸”);
},

。此处不需要live
,您的事件哈希也没有问题。模板可能有问题。我只是隔离了输入字段,并在此事件中聚焦了
事件。它工作正常

<script type="text/template" id="formtemplate">    
    <form>
        <input type="text" class="loginname"  value="" placeholder="enter login"/>
    </form>
</script>

好的-你说把这个和模糊联系起来,这个格式终于起作用了

“模糊输入#登录名”:“用户检查”

events: {
         'click .btn-primary'   : 'saveClient',    
         'blur input#loginname'      : 'userCheck'
      },
userCheck: function(e) {

     console.log("usercheck detected");
     alert("Alerts suck.");

  },

控制台没有显示,但至少我现在正在捕捉模糊!谢谢大家。

尝试直接在初始化事件中绑定事件,而不是使用事件哈希。您能提供示例代码吗?如果您定义了$el,绑定意味着附加到当前定义的$el,对吗?我在每个视图中都没有初始化函数se,只是事件{}如果你仍然对我感兴趣,我明天可以帮你。谢谢你的关注。仍然不起作用。我似乎无法在事件行上设置断点,代码永远无法到达checkUser函数。在chrome developer tools和check in event listeners选项卡中,它应该有一个
blur
事件关联如果你的模板/选择器没有什么问题的话
var View = Backbone.View.extend({
    events:{
        'focusout .loginname':'checkUser'
    },
    render:function(){
        this.$el.html($('#formtemplate').html());
    },
    checkUser:function(e){
        alert('checkUser'); //works well
    }
});

var view = new View();
view.render();
view.$el.appendTo('body');
events: {
         'click .btn-primary'   : 'saveClient',    
         'blur input#loginname'      : 'userCheck'
      },
userCheck: function(e) {

     console.log("usercheck detected");
     alert("Alerts suck.");

  },