knockout.js基本提交绑定问题

时间:2012-03-26 19:06:30

标签: submit knockout.js

所以我使用简单的提交绑定来传递函数数据:

<form data-bind="submit: printTest">
    Enter a weight in the box: <BR>
    <INPUT TYPE="text" id="inputWeight" VALUE=""><P>
    <button type="submit">Submit</button>
</form>

我刚刚开始使用KO,所以我要写一个基本的打印功能来测试这个输入:

self.printTest = function(xxx){

        var myTextField = xxx;
    if(myTextField.value != "")
        alert("You entered: " + myTextField.value)
    else
        alert("Would you please enter some text?")
    }

我的问题是,当我点击提交时,我得到一个“你输入:未定义”,但是当我刷新页面时,表单中的输入会收到警报。这非常令人沮丧! idk如果这是一个淘汰问题或简单的HTML问题。

1 个答案:

答案 0 :(得分:3)

您尚未显示所有代码,因此我将根据上述内容尝试回答此问题。首先,submit binding只是在提交表单时执行一个函数,并允许您停止/确认表单应该提交。

当提交fires时,它传递了dom元素的形式,它没有传递输入值,所以这段代码永远不会工作。

要打印输入值,首先需要将输入值绑定到模型上的值。

<input type="text" id="inputWeight" value="" data-bind="value: inputWeight" />

然后您可以像这样提醒值。

var viewModel = function () {
    var self = this;
    self.inputWeight = ko.observable();

    self.printTest = function() {

        var valueEntered = self.inputWeight();
        if(valueEntered) {
            alert("You entered: " + valueEntered);
        }
        else {
            alert("Would you please enter some text?");
        }
    }
};

Heres the working fiddle

仅供参考 - 你的初始代码/标记有一些错误,遗漏了我修复的半冒号错误标记。

希望这有帮助。