【问题标题】:Page reloading on pressing enter key in knockoutjs在knockoutjs中按回车键重新加载页面
【发布时间】:2012-12-16 19:16:39
【问题描述】:

我在表单标签内有自动完成的输入控件,如下所示:

 <input type="text" class="tags" data-bind="value: selectedMember(), event: { keypress: $root.DisablePostBack}" />

我为强制选择添加了模糊事件,如下所示:

$(function () {
        $('.tags').autocomplete({
            //make ajax call to get all mentored member of logged member
            source: function (request, response) {
                $.ajax({

                });
            },
            minlength: 0,
            focus: function () {
                // prevent value inserted on focus
                return false;
            },
            select: function (event, ui) {
                self.selectedMember(this.value);
                return false;
            }

        }).blur(
            function () {
                var terms = split(this.value);
                self.selectedMember(terms);
                return false;
            }
                );

当用户键入名称而不是从自动完成中选择成员并按回车键时,将调用模糊事件。 我的问题是当我按回车键时,页面再次重新加载。按下回车键时如何防止页面重新加载。

*EDIT: * 要禁用回车键,我添加了如下功能:

self.DisablePostBack = function (e) {
    if (e.which == 13) {
        return false;
    }
};

并在该文本框的按键上调用它。但是在那之后按键不起作用。

【问题讨论】:

  • 我不确定这是淘汰赛问题。这可以是默认的表单行为。无论如何,您必须提供更多代码示例。你能创造出模仿错误行为的小提琴吗?

标签: jquery html knockout.js


【解决方案1】:

我已经用 keypress 事件替换了 blur 事件,并检查是否按下了 enter 键,如下所示:

.keypress(function (e) {
            if (e.which == 13) {
                //write code
            }
        });

现在它无需重新加载页面即可工作。我已经用按键替换了模糊,因为在 chrome 中按下输入键时不会调用模糊。

感谢大家的有用建议。

【讨论】:

    【解决方案2】:

    尝试使用类似的东西:

    if((e.keyCode == 13) {// do something;
    return false;}
    

    e.keyCode == 13 将帮助您检查是否按下了 Enter,然后您可以执行一些您的代码,之后您必须返回 false 以防止浏览器发送数据

    【讨论】:

    • 我已根据您的解决方案更改了我的代码。但仍然无法正常工作。
    • 是的,我已经编辑了您的帖子,您应该将 e 变量放入 self.DisablePostBack = function (e) {。如果没有就会报错 e is undefined;
    • 你什么时候使用代码self.DisablePostBack = function (e) { if (e.which == 13) { return false; } };你应该在焦点功能中使用它。如果密钥代码不同于 13(即返回 true),您应该做一些事情;
    • 我已经在焦点上试过了,但是按回车键时仍然会重新加载页面。
    • 你能给我链接吗?会更轻松。如果它在本地你可以把代码放到:jsfiddle.net
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2017-05-26
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多