私はこの状況に問題があります (http://jsfiddle.net/LFG8G/)。私のモバイル ページには、一連の値 (私の例では 01,02,03) を持つ選択メニュー要素と、折りたたみ可能なコンテンツ ブロック内の他の一連のコントロールがあります。
フォームは次のようになります。
<div data-role="page" id="pagina">
<form action="http://www.google.com" method="get" id="form1">
<div data-role="content">
<select name="myOption" id="myOption" data-native-menu="false">
<option value=""> </option>
<option value="01">Value 01</option>
<option value="02">Value 02</option>
<option value="03">Value 03</option>
</select>
<input type="submit" data-role="button" value="Validate" />
<div data-role="collapsible">
<h3>Other fields</h3>
<div>
<div data-role="fieldcontain">
<label for="f1"><strong>Field 1</strong></label>
<input type="text" name="f1" id="f1" />
</div>
<div data-role="fieldcontain">
<label for="f2"><strong>Field 2</strong></label>
<input type="text" name="f2" id="f2" />
</div>
</div>
</div>
</div>
</form>
</div>
データをサーバーに送信する前にフィールドを検証する必要があり、jquery 検証プラグインを使用しました。
特定のオプション メニュー (項目 01) を選択すると、コンテンツ ブロックのフィールドに入力する必要があります。
このためのルールを作成しましたが、ボタンを押して検証するときに、コンテンツがユーザーに表示されない場合、検証コードは実行されません。
JavaScript は次のようになります。
$(document).live('pageshow', function (event, ui) {
$('#form1').validate({
ignore:'',
rules: {
myOption: {
required: true
},
f1: {
required: {
depends: function (el) {
if ($('#myOption').val() == "01") {
return true;
} else {
return false;
}
}
}
},
f2: {
required: {
depends: function (el) {
if ($('#myOption').val() == "01") {
return true;
} else {
return false;
}
}
}
}
}
});
});