所以我使用简单的提交绑定来传递函数数据:
<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问题。
答案 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?");
}
}
};
仅供参考 - 你的初始代码/标记有一些错误,遗漏了我修复的半冒号错误标记。
希望这有帮助。