1
私はこのコードを見つけたが、FIrefoxで動作していないことを達成するために、入力フィールドに部分的なテキストを読み取り専用で作成しようとしています。event.preventdefaultがfirefoxで動作していません
event.preventDefaultが問題を引き起こしていることがわかりました。 試してもfalseが返されますが、これも機能しません。
角度JS指令コード
app.directive('partialReadonly', function() {
return {
restrict: 'A',
link: function ($scope, $element, attrs) {
$element.on('keypress, keydown', function (event) {
var readOnlyLength = attrs["partialReadonly"].length;
if ((event.which != 37 && (event.which != 39))
&& (($element[0].selectionStart < readOnlyLength)
|| (($element[0].selectionStart == readOnlyLength) && (event.which == 8)))) {
alert('preventdef');
//return false;
event.preventDefault();
}
});
$scope.load = function() {
alert('load called attrs["partialReadonly"] ' + attrs["partialReadonly"]);
$scope.temp = attrs["partialReadonly"];
// $element[0].value = attrs["partialReadonly"];
};
}
};
});
HTMLコード
<input type="text" ng-init="load()" ng-model="key" partial-readonly="{{number}}" />
を助けた - それは問題がでpreventDefaultではないことかもしれないデバッグにアラートを使用しないでpreventDefault –
でアラートを切り替えてみてください... – epascarello
。それは 'event.which'にあるかもしれません。これを参照してください[リンク](http://stackoverflow.com/questions/18177818/why-jquerys-event-which-gives-different-results-in-firefox-and-chrome) –