次のjQueryツールオーバーレイがあります。
<div id='editDescriptiontOverlay' class='overlay'>
<input type='text' class='description'/>
<button class='save'>Save</button>
<button class='close'>Cancel</button>
</div>
背景情報:このオーバーレイのHTMLは静的です。それぞれが独自の編集リンクを持つアイテムのリストがあります。特定の[編集]リンクをクリックすると、:$('a[rel=#editDescriptionOverlay]').overlay( { ... } );
を呼び出すことでオーバーレイが生成され、入力にそれぞれのテキストが入力されます。
[保存]ボタンは、入力要素のテキストを検証し、検証が成功した場合にのみオーバーレイを閉じる必要があります。それ以外の場合、オーバーレイは開いたままにする必要があります。[キャンセル]ボタンは、検証せずにオーバーレイを閉じるだけです。
検証ロジックは、動作することが個別に検証されています。
onBeforeClose
検証の手段として、オーバーレイ生成中にイベントを設定してみました。このアプローチでは、[保存]ボタンと[キャンセル]ボタンの両方に同じクラスが必要でした.close
。残念ながら、この条件は.close
オーバーレイ内のすべての要素に適用されるため、 [キャンセル]ボタンも有効でした。
また、次のように、オーバーレイを生成した直後にクリックイベントを[保存]ボタンにバインドしようとしました。
$('.save', $('#editDescriptionOverlay'))
.unbind('click')
.bind('click', function() {
if (validateText) {
console.log("Validation passed.");
$('a[rel=#editDescriptionOverlay]').overlay().close();
}
else {
console.log("Validation failed.");
}
});
console.logは検証が機能していることを確認しますが、オーバーレイは閉じません。
どんな洞察もありがたいです、ありがとう。