Angularjs 按键时清除输入字段

Angularjs 按键时清除输入字段,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我试图清除angularjs指令中按键事件上的输入字段 Html: 这里的问题是指令清除当前文本,但按下的键仍保留在输入字段中 是解决此问题的关键。将链接功能更改为以下内容: link: function (scope, elem, attrs, ngModel) { elem.bind('keypress', function (e) { ngModel.$setViewValue(''); ngModel.$render(); e.

我试图清除angularjs指令中按键事件上的输入字段

Html:

这里的问题是指令清除当前文本,但按下的键仍保留在输入字段中


是解决此问题的关键。

将链接功能更改为以下内容:

 link: function (scope, elem, attrs, ngModel) {
    elem.bind('keypress', function (e) {
        ngModel.$setViewValue('');
        ngModel.$render(); 
        e.preventDefault();  //Note this
    });
}

e.preventDefault()
将阻止按键事件完成。

将链接功能更改为以下内容:

 link: function (scope, elem, attrs, ngModel) {
    elem.bind('keypress', function (e) {
        ngModel.$setViewValue('');
        ngModel.$render(); 
        e.preventDefault();  //Note this
    });
}

e.preventDefault()
将阻止按键事件完成。

我可以理解您的问题。我建议尝试使用“keyup”事件代替“keypress”事件

试试这个

.directive('maginInput', function () {
return {
    restrict: 'C',
    require: 'ngModel',
    link: function (scope, elem, attrs, ngModel) {
        elem.bind('keyup', function () {
            ngModel.$setViewValue('');
            ngModel.$render(); 
        });
    }
}
});

检查此小提琴,因为我可以理解您的问题。我建议尝试使用“按键”事件代替“按键”事件

试试这个

.directive('maginInput', function () {
return {
    restrict: 'C',
    require: 'ngModel',
    link: function (scope, elem, attrs, ngModel) {
        elem.bind('keyup', function () {
            ngModel.$setViewValue('');
            ngModel.$render(); 
        });
    }
}
});

检查这把小提琴

你到底想要什么,你能解释一下你的要求吗,以便更好地理解这个问题。如果你按下一个键,指令会一直清除输入,因此你不能在那里打字。我不明白你想做什么,请给我们更多的信息!你到底想要什么,你能解释一下你的要求,以便更好地理解这个问题吗?如果你按下一个键,指令会一直清除输入,这样你就不能在那里打字了。我不明白你想做什么,请给我们更多的信息!谢谢@Viplock。这解决了我的问题。如果您能解释我的代码不起作用的原因,那就太好了。@Pratik如果您的问题是通过“按键”事件解决的,请接受回答。首先,请使用“执行”并清除输入字段中的值,然后用键值更新文本框的值。但在“keyup”事件中,它将首先通过键值(按下键)更新文本框的值,然后执行代码清除文本框的值。希望你能明白这个解释。谢谢@Viplock。这解决了我的问题。如果您能解释我的代码不起作用的原因,那就太好了。@Pratik如果您的问题是通过“按键”事件解决的,请接受回答。首先,请使用“执行”并清除输入字段中的值,然后用键值更新文本框的值。但在“keyup”事件中,它将首先通过键值(按下键)更新文本框的值,然后执行代码清除文本框的值。希望你能明白这个解释。