Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Здапретить ввод e - + в input type="number" (https://javascript.ru/forum/css-html/81784-zdapretit-vvod-e-v-input-type%3D-number.html)

fori 29.01.2021 13:55

Здапретить ввод e - + в input type="number"
 
Здравствуйте, к сожалению я столкнулся с необходимостю запрета ввода знаков +,-,е в input type="number"
Пример рабочего кода
<input type="number" onkeydown="return event.keyCode !== 187 && event.keyCode !== 189 && event.keyCode !== 69">

Как можно задать ето-же с помошю функции, тоесть (не рабочий код)
<input type="number" onkeydown="typ">
<script>
function typ(event){
    return event.keyCode !== 187 && event.keyCode !== 189 && event.keyCode !== 69
}
</script>


Или есть более правильны методы решения проблемы))?

Aetae 29.01.2021 14:09

onkeydown="typ(event)"

или
addEventListener('keydown', event => {
  if(event.target.type === 'number' && [187, 189,69].includes(event.keyCode))
    event.preventDefault();
}, true)

fori 29.01.2021 14:11

К сожалению ето не работает((
<input type="number" onkeydown="typ(event)">
<script>
function typ(event){
    return event.keyCode !== 187 && event.keyCode !== 189 && event.keyCode !== 69;
}
</script>

-+е всеравно пишется в input

Aetae 29.01.2021 14:39

Ну да.
onkeydown="return typ(event)"

fori 29.01.2021 14:55

Спасибо большое, код на js работает
<input type="number" onkeydown="return typ(event)">
<script>
function typ(event){
    return event.keyCode !== 187 && event.keyCode !== 189 && event.keyCode !== 69;
}
</script>

Могу ли я спросить как можно сделать такую функцыю для vue.js
К примеру код vue.js ниже не работает((
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<div id="vue">
<input type="number" @keydown="return tonum(event)">
</div>
<script>
	var vue = new Vue({
  el: '#vue',
  data: {
  },
  methods: {
    tonum() {
     return event.keyCode !== 187 && event.keyCode !== 189 && event.keyCode !== 69;
    }
  }
})
</script>

fori 29.01.2021 16:02

Спасибо, все получилось при использовании директив
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<div id="vue">
  <input type="number" v-num="true" @keydown="return tonum(event)">
</div>
<script>
	
Vue.directive('num', function (el) {
addEventListener('keydown', event => {
  if(event.target.type === 'number' && [187, 189,69].includes(event.keyCode))
    event.preventDefault();
}, true)	
})
	var vue = new Vue({
  el: '#vue',
  methods: {
   tonum() {
		alert("working");
    }
  }
})
</script>

рони 29.01.2021 16:03

fori,
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<div id="vue">
<input type="number" @keydown="tonum">
</div>
<script>
    var vue = new Vue({
  el: '#vue',
  data: {
  },
  methods: {
    tonum(event) {
     if([187, 189,69].includes(event.keyCode))  event.preventDefault();
    }
  }
})
</script>


Часовой пояс GMT +3, время: 09:49.