当前位置: 首页 > 面试题库 >

KeyPress事件在Ember中无法正常工作

衡安晏
2023-03-14
问题内容

我想做的是,每当用户停止在“项目名”字段中输入内容时进行一次ajax调用,并对照数据库进行检查,并显示一条错误消息,指出“它存在”。但是keypress事件不能按预期方式工作,首先它会忽略输入的第一个字母,结果单词没有完全发送到数据库。

这是我的Controller

App.ProjectController = Ember.ArrayController.extend({
    actions : {
        createNew : function() {
            data = {
                projectname : this.get('projectname'),
                projectdesc : this.get('projectdesc'),
                projectbudget : this.get('projectbudget'),
            };
            console.log(JSON.stringify(data));
            //console.log(id);
            $.ajax({
                type : "POST",
                url : "http://ankur.local/users/createNewProject",
                data : data,
                dataType : "json",
                success : function(data) {
                    console.log('success');
                    //alert('');
                }
            });
            alertify.success("Project Created");
            this.set('projectname', "");
            this.set('projectdesc', "");
            this.set('projectbudget', "")
            return false;
        },
        checkName: function(){
            data = {
                projectname : this.get('projectname'),
            };
            var checkedName = $.ajax({
                type : "POST",
                url : "http://ankur.local/users/checkProjectName",
                data : data,
                dataType : "json",
                success : function(data) {
                    console.log('Yes it');
                }
            });
            console.log(data);
            console.log(checkedName);
        }
    }


});

这是HTML,

<script type="text/x-handlebars" id="project">
<div class="row" style="padding-left: 30px">

        <div class="span12" id="form-container">
            <div class="well well-small">
                <p style="text-align: center">
                    You can create a new Project by filling this simple form.
                </p>

                <p style="text-align: center"> Project Name should be minimum 10 characters &amp; maximum 50 characters.
                    Project Description
                    10 to 300 characters.
                </p>
            </div>
            <div class="row" id="test">
                <div class="offset3 span8">
                    <form class="form-horizontal" id="projectform">
                        <div class="control-group">
                            <label class="control-label" for="projectname">Project Name: </label>

                            <div class="controls">
                                {{view Ember.TextField valueBinding='projectname' style="max-width: 100%" onEvent="keyUp" action=checkName}}
                            </div>
                        </div>
                        <div class="control-group">
                            <label class="control-label" for="projectdesc">Project Description:</label>

                            <div class="controls">
                                {{view Ember.TextArea valueBinding='projectdesc' style="max-width: 100%"}}
                            </div>
                        </div>
                        <div class="control-group">
                            <label class="control-label" for="projectbudget">Project Budget($)</label>


                            <div class="controls">
                               {{view Ember.TextField valueBinding='projectbudget' id="budget" style="max-width: 100%"}}
                            </div>

                        </div>
                        <div class="control-group">
                            <div class="controls">
                                <button class="btn"
                                {{action 'createNew' }}>Add Project</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        </div>

我可以做出哪些改进才能达到预期的效果?


问题答案:

按键工作正常,在文本框值更改之前进行按键操作。

看起来您所需要的方式不支持按键。幸运的是,它很容易覆盖:

App.KeyUpTextField = Em.TextField.extend({
  keyUp:function(event){
    this.sendAction('upKeyAction', event); 
  }
});


{{view App.KeyUpTextField value=projectname upKeyAction='checkName'}}

顺便说一句,我会在您的keyUp函数中进行反跳或类似操作,似乎在每个keyup事件上发送请求都会有点chat不休。



 类似资料:
  • 我在主页组件中有这个代码,当按下向下/向上箭头键时,什么也没有发生。我刚刚意识到,当用ctrl键按箭头键时,eventhandler可以正常工作。我到处找,但什么也没找到。有人能帮忙吗?我的浏览器是Chrome v.96。React版本17.0.2,节点v.16.13.1

  • 问题内容: 尽管我很确定这是昨天或前一天工作的,例如,在IE10中不再起作用。我已经测试了我的浏览器,但是它不再起作用了。还有谁有相同的问题吗?或者,它永远都行不通吗? 问题答案: IE不支持输入type =“ number”,但您可以使用jQueryUISpinner小部件。它非常易于使用,并且具有许多对开发人员友好的API。

  • 问题内容: 工作如何? 以下代码在这里不起作用: Employee.java 地址.java persistence.xml 这是测试类……请检查城市名称,它没有在ADDRESS表中按降序存储地址值 JPAOrderByAnnotationTest 问题答案: 我认为您误解了注释的实际作用。根据javadoc: 指定在 检索 关联或集合时,将值指定为关联的集合或元素集合的元素的顺序。 [添加重点]

  • 我这里有点麻烦。我试图在我的MVC4项目中使用TinyMCE作为文本编辑器。 到目前为止,这很简单,我只需要能够正确地显示编辑器。 我有两个重要的类。 控制员: 然后是视图,这就是我试图让TinyMCE工作的地方: @{ViewBag.Title=“Index”;} 亲善 这是一些可以用TinyMCE编辑的内容。 出于某种原因,结果是这样的:它看起来如何 知道为什么我没有从TinyMCE获得任何功

  • 我有一个很长的表单,表单的内容是通过邮件(HTML电子邮件)发送的。 我的PHP邮件函数在其余的内容中工作得很好。但当我将以下内容添加到邮件正文时,邮件就不工作了。 基本上,我得到的。 邮件头为

  • 问题内容: 因此,我的设置无法按我想要的方式工作。因此,每当我运行该程序时,它就会立即从0变为100。我尝试使用,任务,并尝试了,但没有任何尝试。 这是我的程序: @MadProgrammer这是我尝试做一名摆动工作人员并将每个名称写入文档并更新进度栏的尝试。该程序将达到86%左右并停止运行,永远不会创建完成的文档。该程序将创建一个空白文档。这是我首先创建的SwingWorker对象,这是两种方法