javascript - 如何在提交时处理 q-input/preventDefault 中的 "enter"?

标签 javascript forms preventdefault quasar-framework

我有一个文本输入框,类似于:

        <q-input
          @blur="checkTextAnswer"
          @keyup.enter="submit"
          @keydown="checkEnterKey"
          v-model.trim="textInput"

当用户按下回车键时,我想将其视为提交,即处理输入而不是在文本中添加额外的换行符。

这有点像 JQuery 时代的 preventDefault。我确实找到了这个: https://quasar-framework.org/components/other-utils.html 但似乎更一般的 DOM 事件

我也试过只修改字符串(str.replace the newline)但即使是那个 hack 也有一个丑陋的延迟。

最佳答案

你需要使用vue event modifier “.prevent”在你的事件中。它还需要是一个@keydown 事件,因为在“textarea”类型的输入中使用@keydown 事件调用“添加换行符”事件。

解决方案是:

     <q-input
      type="textarea"
      @keydown.enter.prevent="submit"
      v-model.trim="textInput"

编辑:

“提交”是您必须定义的方法。这是我在 codepen 中制作的示例:

Codepen example

如果你想在按下 enter 键时提交表单,你可以使用 javascript。

this.$refs[refKeyYouGaveToYourForm].submit()

关于javascript - 如何在提交时处理 q-input/preventDefault 中的 "enter"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571707/

相关文章:

javascript - 如何使用 Ramda.js 中的回调函数动态填充/扩展二维数组

python - 将文件返回给 WSGI GET 请求

javascript - 如何在新窗口中提交表单,然后重定向父页面

jquery - event.preventDefault() 总是在函数结束之前

javascript - 防止在移动浏览器上滚动,而不防止输入焦点

jquery PJAX/AJAX PreventDefault() 不阻止链接被单击

javascript - Angular : Pass variable to directive

javascript - 如何在javascript中更改鱼眼效果中元素之间的边距

javascript - Vue.js this.$nextTick() 似乎没有等待 dom 渲染

angularjs - 表格 : Form Validation in Angular 中至少有一个字段是强制性的