经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue输入框组件开发过程详解
来源:jb51  时间:2022/3/1 15:40:03  对本文有异议

本文实例为大家分享了vue输入框组件开发过程的具体代码,供大家参考,具体内容如下

input-number.js

  1. function isValueNumber(value) {
  2. ? ? return(/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9]*$)|(^-?0{1}$)/).test(value + '');
  3. }
  4. Vue.component('input-number',{
  5. ?? ?template: '?? ?<div class=input-number>?? ??? ?<input?? ??? ??? ?type="text"?? ??? ??? ?:value="currentValue"?? ??? ??? ?@change="handleChange"?? ??? ??? ?@focus="keyControl">?? ??? ?<button ?? ??? ??? ?@click="handleDown" ?? ??? ??? ?:disabled="currentValue<=min">-</button>?? ??? ?<button ?? ??? ??? ?@click="handleUp" ?? ??? ??? ?:disabled="currentValue>=max">+</button>?? ?</div>',
  6. ?? ?data: function (){
  7. ?? ??? ?return {
  8. ?? ??? ??? ?currentValue: this.value,
  9. ?? ??? ??? ?currentStep: this.$parent.step
  10. ?? ??? ?}
  11. ?? ?},
  12. ?? ?watch: {
  13. ?? ??? ?currentValue: function (val){
  14. ?? ??? ??? ?this.$emit('input',val);
  15. ?? ??? ??? ?this.$emit('on-change',val);
  16. ?? ??? ?},
  17. ?? ??? ?value: function(val){
  18. ?? ??? ??? ?this.updateValue(val);
  19. ?? ??? ?}
  20. ?? ?},
  21. ?? ?methods: {
  22. ?? ??? ?handleDown: function(){
  23. ?? ??? ??? ?if(this.currentValue<=this.min) return;
  24. ?? ??? ??? ?this.currentValue-=this.currentStep;
  25. ?? ??? ?},
  26. ?? ??? ?handleUp: function(){
  27. ?? ??? ??? ?if(this.currentValue>=this.max) return;
  28. ?? ??? ??? ?this.currentValue+=this.currentStep;
  29. ?? ??? ?},
  30. ?? ??? ?updateValue: function(val){
  31. ?? ??? ??? ?if(val>this.max) val=this.max;
  32. ?? ??? ??? ?if(val<this.min) val=this.min;
  33. ?? ??? ??? ?this.currentValue=val;
  34. ?? ??? ?},
  35. ?? ??? ?handleChange: function(event){
  36. ? ? ? ? ? ? var val = event.target.value.trim();
  37. ? ? ? ? ? ? var max = this.max;
  38. ? ? ? ? ? ? var min = this.min;
  39. ? ? ? ? ? ? if(isValueNumber(val)) {
  40. ? ? ? ? ? ? ? ? val = Number(val);
  41. ? ? ? ? ? ? ? ? this.currentValue = val;
  42. ? ? ? ? ? ? ? ? if(val > max) {
  43. ? ? ? ? ? ? ? ? ? ? this.current = max;
  44. ? ? ? ? ? ? ? ? }
  45. ? ? ? ? ? ? ? ? if(val < min) {
  46. ? ? ? ? ? ? ? ? ? ? this.current = min;
  47. ? ? ? ? ? ? ? ? }
  48. ? ? ? ? ? ? } else {
  49. ? ? ? ? ? ? ? ? //如果输入的不是数字,将输入的内容重置为之前的currentValue
  50. ? ? ? ? ? ? ? ? event.target.value = this.currentValue;
  51. ? ? ? ? ? ? }
  52. ?? ??? ??? ?
  53. ?? ??? ?},
  54. ?? ??? ?keyControl: function(){
  55. ?? ??? ??? ?var _this=this;
  56. ?? ??? ??? ?$(window).keydown(function(e){
  57. ?? ??? ??? ??? ?if($('input')){
  58. ?? ??? ??? ??? ??? ?if(e.keyCode==38){
  59. ?? ??? ??? ??? ??? ??? ?_this.handleUp();
  60. ?? ??? ??? ??? ??? ?}
  61. ?? ??? ??? ??? ??? ?else if(e.keyCode==40){
  62. ?? ??? ??? ??? ??? ??? ?_this.handleDown();
  63. ?? ??? ??? ??? ??? ?}
  64. ?? ??? ??? ??? ?}
  65. ?? ??? ??? ?});
  66. ?? ??? ?}
  67. ?? ?},
  68. ?? ?mounted: function(){
  69. ?? ??? ?this.updateValue(this.value);
  70. ?? ?},
  71. ?? ?props:{
  72. ?? ??? ?max:{
  73. ?? ??? ??? ?type: Number,
  74. ?? ??? ??? ?default: Infinity
  75. ?? ??? ?},
  76. ?? ??? ?min: {
  77. ?? ??? ??? ?type: Number,
  78. ?? ??? ??? ?default: -Infinity
  79. ?? ??? ?},
  80. ?? ??? ?value: {
  81. ?? ??? ??? ?type:Number,
  82. ?? ??? ??? ?default: 0
  83. ?? ??? ?},
  84. ?? ??? ?step: {
  85. ?? ??? ??? ?type:Number,
  86. ?? ??? ??? ?default: 1
  87. ?? ??? ?}
  88. ?? ?}
  89. })

index.js

  1. var app=new Vue({
  2. ?? ?el: "#app",
  3. ?? ?data: {
  4. ?? ??? ?value: 5,
  5. ?? ??? ?step: 10
  6. ?? ?}
  7. })

index.html

  1. <!DOCTYPE html>
  2. <html>
  3. ?? ?<head>
  4. ?? ??? ?<meta charset="utf-8" />
  5. ?? ??? ?<title></title>
  6. ?? ??? ?<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
  7. ?? ??? ?<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  8. ?? ?</head>
  9. ?? ?<body>
  10. ?? ??? ?<div id="app">
  11. ?? ??? ??? ?<input-number v-model="value" :max="100" :min="0"></input-number>
  12. ?? ??? ?</div>
  13. ?? ??? ?<script src="js/input-number.js" type="text/javascript" charset="utf-8"></script>
  14. ?? ??? ?<script src="js/index.js" type="text/javascript" charset="utf-8"></script>
  15. ?? ?</body>
  16. </html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号