jqueryモーダルダイアログでhtmlフォームを表示したいボタンがいくつかあります:
<button class="add1">Add1</button>
<button class="add2">Add2</button>
<div id="form1">
<form id='AddForm1' name='' method='post' action='<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>'>
<label for="Name">Name: </label>
<input id="Name" name="camera_name" size="24" maxlength="36" value="Enter label for camera" onclick="this.select()" />
<label for='Quality'>Quality: </label>
<select id='Quality' name='quality'>
<option value='HIGH' selected='selected'>High</option>
<option value='MEDIUM'>Medium</option>
<option value='LOW'>Low</option>
</select>
<label for='Status'>Status: </label>
<select id='Status' name='status'>
<option value='ENABLED' selected='selected'>On</option>
<option value='DISABLED'>Off</option>
</select>
<label for='EmailNotice'>Email notice: </label>
<select id='EmailNotice' name='email_notice'>
<option value='ENABLED' selected='selected'>On</option>
<option value='DISABLED'>Off</option>
</select>
<label for='Sensitivity'>Sensitivity: </label>
<select id='Sensitivity' name='sensitivity'>
<option value='HIGH'>High</option>
<option value='AVERAGE' selected='selected'>Average</option>
<option value='LOW'>Low</option>
</select>
<input type='hidden' name='type' value='TYPE1' />
<button type='submit' class='submitme' name='add' value='Add'>Add</button>
<button type='button' class='cancel_changes' name='cancel_changes' value='Cancel'>Cancel</button>
</form>
</div>
これで、名前、品質、ステータス、電子メール通知などの共通項目を含む 2 番目のフォームができましたが、選択したボタンによっていくつかの項目が異なります。
<div id="form2">
<form id='AddForm2' name='' method='post' action='<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>'>
<label for="Name">Name: </label>
<input id="Name" name="camera_name" size="24" maxlength="36" value="Enter label for camera" onclick="this.select()" />
<label for='Quality'>Quality: </label>
<select id='Quality' name='quality'>
<option value='HIGH' selected='selected'>High</option>
<option value='MEDIUM'>Medium</option>
<option value='LOW'>Low</option>
</select>
<label for='Status'>Status: </label>
<select id='Status' name='status'>
<option value='ENABLED' selected='selected'>On</option>
<option value='DISABLED'>Off</option>
</select>
<label for='EmailNotice'>Email notice: </label>
<select id='EmailNotice' name='email_notice'>
<option value='ENABLED' selected='selected'>On</option>
<option value='DISABLED'>Off</option>
</select>
<label for='UserName'>User name: </label>
<input id='UserName' size='14' maxlength='16' name='add_user' value="Enter username" onfocus="if(this.value=='Enter username') this.value='';" />
<label for='Pass'>Password: </label>
<input type='password' size='12' maxlength='16' id='Pass' name='add_pass' value='' />
<label for='IP'>Enter IP: </label>
<input id='IP' name='add_ip' size='10' value="Enter IP" onfocus="if(this.value=='Enter IP') this.value='';" />
<label for='Port'>Enter port: </label>
<input id='Port' name='add_port' size='12' maxlength='6' value="Enter Port" onfocus="if(this.value=='Enter Port') this.value='';" />
<input type='hidden' name='type' value='TYPE2' />
<button type='submit' class='submit' name='add' value='Add'>Add</button>
<button type='button' class='cancel_changes' name='cancel_changes' value='Cancel'>Cancel</button>
</form>
</div>
クリックしたボタンに応じて、jquery ダイアログが開きます。
var $dialog1 = $('#form1').dialog({
modal:true,
autoOpen: false,
resizable:false,
width: 625
}); //init dialog
var $dialog2 = $('#form2').dialog({
modal:true,
autoOpen: false,
resizable:false,
width: 625
}); //init dialog
//events
$('.add1').click(function(e) {
$dialog1.dialog('open');
});
$('.add2').click(function(e) {
$dialog1.dialog('open');
});
$(".cancel_changes").click(function() {
$dialog1.dialog('close');
$dialog2.dialog('close');
});
$(".submit_camera").click(function() {
$("#AddForm1").validate({
//all validation stuff
});
最後に私の質問に、これにより適切なフォームでダイアログが開きますが、ここで多くのものを複製し始めました。送信の検証にたどり着くと、重複の量に夢中になり始めます。同じ名前の ID があるため、フォームをクリーンアップする必要があります。すべてを複製するよりも良い方法が必要だと考えています。どういうわけか1つのフォームしか持っていないのでしょうか?