作成日:2018-03-30, 更新日:2018-03-30
基本
・textareaはreadonly
・inputで「radio・checkbox・submit・file」以外はreadonly
・type=fileはクリック無効化(クリックできるけど無効・・・見た目を変更しないとダメっぽい)
・type=radioは対象以外をdisabled
・selectタグは対象以外をdisabled
・type=checkboxが全てdisabled。対象のみhidden追加。あとで削除することも考える
※resetは個人的に使わないので、対象外
※focusは気にしていない。
<style>
.confirmItem {
border: none!important;
/* background-color: transparent!important; */
background-color: #f3f3f3!important;
}
</style>
<script>
var wrapForm = 対象のフォーム(IDか何か);
var switchConfirm = function(wrapForm, isInput) {
$(wrapForm).find('.confirmItem').removeClass('confirmItem');
// textareaはreadonly
$(wrapForm).find('textarea').prop('readonly', isInput);
if ( isInput ) {
$(wrapForm).find('textarea').addClass('confirmItem');
}
// inputで「radio・checkbox・submit・file」以外はreadonly
$(wrapForm + ' input').each(function(){
var tmpType = $(this).attr('type');
if ( tmpType!='radio' && tmpType!='checkbox' && tmpType!='submit' && tmpType!='file' ) {
$(this).prop('readonly', isInput);
if ( isInput ) {
$(this).addClass('confirmItem');
}
}
});
// type=fileはclickイベント無効化
if ( isInput ) {
$(wrapForm).on('click', '[type=file]', function(){ return false; });
}
else {
$(wrapForm).off('click', '[type=file]');
}
// type=radioは対象以外をdisabled
$(wrapForm + ' [type=radio]').each(function(){
if ( !$(this).prop('checked') ) {
$(this).prop('disabled', isInput);
if ( isInput ) {
$(this).addClass('confirmItem');
}
}
});
// selectタグは対象以外をdisabled
$(wrapForm + ' select option').each(function(){
if ( !$(this).prop('selected') ) {
$(this).prop('disabled', isInput);
if ( isInput ) {
$(this).addClass('confirmItem');
}
}
});
// type=checkboxが全てdisabled。対象のみhidden追加。あとで削除することも考える
$(wrapForm + ' [type=checkbox]').each(function(){
if ( $(this).prop('checked') ) {
if ( isInput ) {
var tmpChk = '<input type="hidden" name="' + $(this).attr('name') + '" value="' + $(this).val() + '" class="tmpAddChkBox" />';
$(wrapForm).append(tmpChk);
$(this).addClass('confirmItem');
}
else {
$(wrapForm).find('.tmpAddChkBox').remove();
}
}
$(this).prop('disabled', isInput);
});
}
$(wrapForm).on('click', 確認ボタン, functiojn(){
switchConfirm(wrapForm, true); // 確認ボタンが押されたらすべて無効化
});
$(wrapForm).on('click', 修正ボタン, functiojn(){
switchConfirm(wrapForm, false); // 修正ボタンが押されたらすべて有効化
});
</script>