ユーザーの詳細を編集するためのダイアログを使用して、ユーザーのグリッド機能を構築しようとしています。これが私の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/編集