【问题标题】:submit form with enter key in textarea using knockoutjs submit binding使用 knockoutjs 在 textarea 中使用 enter 键提交表单提交绑定
【发布时间】:2014-08-28 10:46:14
【问题描述】:

我想使用提交绑定提交我的表单,但它不起作用。在我的表单中,我只有 textarea 字段。我怎样才能做到这一点。当我按下回车键时,它只是进入文本区域的下一行,但不提交表单。我正在使用 phonegap 开发我的移动应用程序,因此输入密钥代码 13 将不起作用。这是我的表格。

<form data-bind="submit:EditQuestion" method="post" data-ajax="false">
    <textarea placeholder="Answer" data-bind="value:Answer"></textarea>
</form>

Fiddle Demo

【问题讨论】:

  • 那么你是说event.keyCode === 13 不能在手机上使用phonegap 吗?
  • 我看到的这篇文章和其他帖子似乎都走上了这条路:stackoverflow.com/questions/9502561/…
  • 我有一个更新的小提琴,但如果它已经过测试并且失败了,我不会发布我的答案:jsfiddle.net/3ux7Lj4g/3
  • 如果要使用回车键触发表单,则表示textarea中的答案总是单行。所以问题是为什么你使用&lt;textarea&gt; 而不是&lt;input&gt;(哪个有效)?
  • 因为这是必需的。答案可能太长,需要显示给用户

标签: knockout.js submit enter


【解决方案1】:

如果确实无法从手机中检测到 ENTER 键,您可以添加一个自定义绑定处理程序来监视 &lt;textarea&gt;,然后在看到 ENTER 字符时调用 EditQuestion 函数。然而,可能不是最优雅的解决方案。

修改您的&lt;textarea&gt; 以包含新的绑定处理程序。我要把它命名为textAreaEditQuestion

<textarea placeholder="Answer" data-bind="value:Answer, textAreaEditQuestion:Answer"></textarea>

这是自定义绑定处理程序(每 100 毫秒轮询一次):

ko.bindingHandlers.textAreaEditQuestion = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        var handle = setInterval(function () {
            var index = element.value.indexOf('\n');
            if (index !== -1) {
                // we found an ENTER key so stop monitoring
                clearInterval(handle);
                // grab the value minus the ENTER key
                var value = element.value.substr(0, index);
                // set the value in your ViewModel
                valueAccessor()(value);
                // call the EditQuestion function
                viewModel.EditQuestion();
            }
        }, 100);
    }
};

【讨论】:

  • 几件事情...(1)您在EditQuestion 方法中将console 拼写为concole,并且(2)当您调用ko.validation.registerExtenders() 时会抛出错误,所以看来您需要在小提琴中添加对淘汰赛验证库的引用。
  • 我已经在这里更新了小提琴link...似乎工作
猜你喜欢
  • 1970-01-01
  • 2021-11-30
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2014-03-11
相关资源
最近更新 更多