Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作显示反转输入的文本框_Javascript_Vue.js - Fatal编程技术网

Javascript 如何制作显示反转输入的文本框

Javascript 如何制作显示反转输入的文本框,javascript,vue.js,Javascript,Vue.js,嘿,我想做一个文本框输入,如果我输入1,然后输入2,然后显示21,如果我输入3,应该显示321,我在前端使用Vue js 这是我试过的 我试图观察变化并改变值,但结果是一个无限循环 我尝试了向下键、按下键和向上键,但它没有注册第一个输入 我也尝试了keyup,但keyup的问题是,它首先向用户显示键入的内容,然后将其反转Html: <input v-model="someStr" @input="reverseString"/> {{ rev

嘿,我想做一个文本框输入,如果我输入1,然后输入2,然后显示21,如果我输入3,应该显示321,我在前端使用Vue js

这是我试过的

我试图观察变化并改变值,但结果是一个无限循环

我尝试了向下键、按下键和向上键,但它没有注册第一个输入

我也尝试了keyup,但keyup的问题是,它首先向用户显示键入的内容,然后将其反转

Html:

 <input v-model="someStr" @input="reverseString"/>
{{ reverseStr }}

据我所知,您希望使用@keyup实时反转输入,并将句子保留在输入字段中,经过一些挖掘后,您不能在仍然键入的情况下使用v模型更改输入,但我找到了一个很好的解决方法

使用绝对定位和两个输入,一个用于输入(隐藏但在顶部),另一个用于输出(可见但在底部) 以下是现场预览:


我提供了这个解决方案,但问题是,首先它向用户显示您键入了一些内容,然后它会反转为“这是什么?”,在沙盒上试试看,它很管用!我没有显示你键入的内容!检查生病的链接bro,就像这很酷,但是如果只使用一个输入,在同一时间在同一个输入中键入并反转,会怎么样?我不认为这是可能的,因为它是实时更新的,所以如果你这样做并调用一个反转函数,你已经反转了最后一个反转!据我所知,它们需要分开,你将失去选择功能,这是唯一的缺点,但它仍然工作,如果你找到任何其他解决方案,请更新我,我做了更新检查第二个沙盒(一个输入),如果它不工作,检查第三个我想在文本框内显示它,而不是在外面的某个地方
data() {
 return {
  someStr: '',
  reverseStr: ''
 }
}



 methods: {
  reverseString() {
   this.reverseStr = this.someStr.split("").reverse().join("")
  }
}
<template>
  <div class="hello">
    
    <div class="invert">
      <input type="text" v-text="input" class="input"   @keyup="handle" >
      <input type="text" v-model="output" class="output"  >
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      input : '',
    }
  },
  computed : {
    output (){
        return this.input.split("").reverse().join("");
    }
  },
  methods : {
    handle(event) {
         this.input = event.target.value;
    }
  }
}
</script>
<style scoped>
  .invert {
    position : relative ;
    width: 200px;
    height: 20px;
    margin: 0 auto;
  }
  .output , .input{
    position: absolute;
    width: 100%;
    right: 0;
  }
  .input {
    z-index: 5;
    opacity : 0 ;
  }
    .output {
    z-index: 0;
    opacity : 1 ;
  }
</style>
<template>
  <div class="hello">
    <div class="invert">
      <input type="text" v-model="input" class="input" @input="handle" />
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      input: "",
    };
  },

  methods: {
    handle(event) {
      if (this.input.length > 1) {
        this.input =
          this.input[this.input.length - 1] +
          this.input.substring(0, this.input.length - 1);
      }
    },
  },
};
</script>


.input {
  z-index: 5;
  background: transparent;
}