ノックアウト検証プラグインが何らかの形でクリック ハンドラーの実行を妨げているようです。これが私の簡略化されたコードです。
HTML:
<div>
<input type="text" data-bind="value: code" />
<button data-bind="click: execute">VALIDATE</button>
</div
Javascript:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
var ViewModel = function () {
var self = this;
this.code = ko.observable();
this.code.extend({ required: true });
this.execute = function () {
if (self.code.isValid()) {
alert("SUCCEED");
}
else {
self.code.valueHasMutated(); //just to show error message
alert("FAILED");
}
};
};
ko.applyBindings(new ViewModel());
});
</script>
私のシナリオ:
- ページを読み込む
- [VALIDATE] をクリックします - エラー メッセージが表示され、アラートに FAILED が表示されます
- 入力に任意のテキストを入力し、すぐに VALIDATE をクリックします。エラー メッセージは消えますが、アラートは表示されません。
- VALIDATE をもう一度クリックします。SUCCEED テキストでアラートが表示されるようになりました。
最初のクリックから VALIDATE ボタンが正しく機能するように、これをどのように修正できますか?
ありがとう、イホール