我正在尝试使用用于编辑用户详细信息的对话框来构建用户网格功能。这是我的 HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout- 2.1.0.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel ="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"> </script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
users:<hr/>
<div data-bind="foreach:users">
<div><span data-bind="text:firstname"></span> <a href="#" data- bind="click:EditUser">edit</a></div><hr>
</div>
<div id="dialog" style="display:none" data-bind="with:selectedUser">
<input type="text" data-bind="value:firstname" name="firstname"/>
<button data-bind="click:validate">save</button>
</div>
</body>
</html>
这是我的 JS:
var userVM=function(nm){
this.firstname=ko.observable(nm);
this.EditUser=function(u){
selectedUser(u);
$("#dialog").dialog();
}
};
var users=ko.observableArray([new userVM('Sholmo'),new userVM('Ahmed')]) ;
var selectedUser=ko.observable();
var validate=function (){
if($('[name="firstname"]').val()==''){
alert('must enter name');
//how prevent model updating?
}
}
ko.applyBindings();
我的问题是我只想在单击“保存”按钮并通过验证后更新用户详细信息(现在用户名在输入文本更改后立即更新)这里是 jsbin 的链接:http: //jsbin.com/epocov/ 1/编辑