応答を編集します。
あなたが探しているものはさらに簡単です!!! ユーザーが他のタブに移動することを制限せずに、ユーザーが現在いるタブのフィールドを単に検証したい場合は、提供したコードの beforeActivate 部分のタブを無視し、jQuery Validation Engine を初期化して非表示フィールドの検証を無視します。非アクティブなすべてのタブの状態です。コードは次のようになります。
jQuery("#myForm").validationEngine('attach', {
promptPosition: "bottomLeft",
validationEventTrigger: "submit",
validateNonVisibleFields: false // this does the trick!
});
例を説明する新しい JSFiddle は次のとおりです: http://jsfiddle.net/T7daH/
乾杯!:-)
-------------------------------------------------- ----- 元の回答 ------------------------------------------- ----------
フィールドやタブのクリックごとにプログラムで検証をトリガーすることなく、複数のタブにまたがるフォームで jQuery Validation Engine を実装する非常に簡単な方法が実際にあります。
複数のタブにまたがる次のフォームがある場合...
<form id="myForm" action="">
<div id="tabs">
<ul>
<li><a href="#tabs-1">Tab 1</a>
</li>
<li><a href="#tabs-2">Tab 2</a>
</li>
<li><a href="#tabs-3">Tab 3</a>
</li>
</ul>
<div id="tabs-1">
<input type="text" id="requiredFiled" name="requiredField" class="validate[required]" />
</div>
<div id="tabs-2"></div>
<div id="tabs-3"></div>
</div>
次に、フォームとタブを次のように設定します。
jQuery("#myForm").validationEngine('attach', {
promptPosition: "bottomLeft",
validationEventTrigger: "submit",
validateNonVisibleFields: true,
updatePromptsPosition: true
});
$(function () {
$("#tabs").tabs({
beforeActivate: function (event, ui) {
if (!$("#myForm").validationEngine('validate')) {
event.preventDefault();
$('#myForm').validationEngine('hide');
setTimeout(function () {
$("#myForm").validationEngine('validate');
}, 450);
}
}
});
});
その結果、ユーザーが現在使用しているタブが完全に有効でない場合、ユーザーは別のタブを選択できません。JSFiddle のデモは次のとおりです: http://jsfiddle.net/g9yLL/36/
乾杯!:-)