1
我想在用戶按鈕點擊時顯示錯誤消息(以防用戶打開頁面並直接點擊按鈕)。 但只有用戶編輯字段時可見狀態才能工作 如何觸發方法以更改可見狀態?按鈕點擊擊倒更改範圍可見狀態
<body>
<input type="text" data-bind="value: can" id="txtcan" />
<span ID="lblCANerror" data-bind="visible:(viewModel.can()=='')" class="error">Mesasage 1</span>
<input type="text" data-bind="value: login" id="txtusername" />
<span ID="lblUsernameError" data-bind="visible:(viewModel.login()=='')" class="error">Mesasage 2</span>
<input type="password" data-bind="value: password" name="txtpassword" />
<span ID="lblPasswordError" data-bind="visible:(viewModel.password()=='')" class="error">Mesasage 3</span>
<button ID="lnkLogin" data-bind="click: ClickBtn"> Click</button>
</body>
<script type='text/javascript'>
var ViewModel = function() {
this.can = ko.observable();
this.login = ko.observable();
this.password = ko.observable();
this.isValidForm = ko.computed(function() {
return ($.trim(this.can) != "") && ($.trim(this.login) != "") && ($.trim(this.password) != "");
}, this);
this.ClickBtn = function(data, e)
{
if (!this.isValidForm())
{
e.stopImmediatePropagation();
};
};
};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
</script>
<style type='text/css'>
.error
{
color: #FF0000;
}
</style>
我不想寫來寫手動變化幅度可見狀態(如IF)(當時span.show)代碼,是否可以只使用knockoutjs FW? 我試過用JQuery訂閱事件,但結果是一樣的。
$().ready(function() {
$("#lnkLogin").click(function (event) {
if (!viewModel.isValidForm()) {
event.preventDefault();
};
})
});
謝謝。
是的,這是正確的方式我同意。但如何在我的情況下做到這一點? – 2013-03-26 08:59:56
@ a3code答案能解決您的問題嗎? – nav0611 2013-03-26 09:30:27
我很確定它會。但由於某種原因,我需要嘗試在我的情況下解決它。 – 2013-03-26 09:32:06