これは少し長い質問ですので、ご容赦ください。
チェックボックスがチェックされたときにフォームを自動的に送信する必要がありました。これまでのところ、以下のコードがあり、完全に機能します。チェックボックスがオンまたはオフの場合は、フォームを送信する必要があります。データベース エントリを読み取り、ロード時に適切なステータス (チェック済みまたは未チェック) を表示する PHP があります。
<form method="post" id="edituser" class="user-forms" action="--some php here--">
<input class="lesson" value="l101" name="flesson" type="checkbox" />
</form>
<script>
$('.lesson').change(function() {
$('.user-forms').submit();
});
</script>
しかし、チェックボックスをスライダーに変える派手なチェックボックス スクリプトを導入すると、機能しなくなりました。チェックボックスの jQuery スクリプトは次のとおりです。
<script src="'.get_bloginfo('stylesheet_directory').'/jquery/checkboxes.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("input[type=checkbox]").tzCheckbox({labels:["Enable","Disable"]});
});
</script>
上記で呼び出されたcheckboxes.jsの内容は次のとおりです。
(function($){
$.fn.tzCheckbox = function(options){
// Default On / Off labels:
options = $.extend({
labels : ['ON','OFF']
},options);
return this.each(function(){
var originalCheckBox = $(this),
labels = [];
// Checking for the data-on / data-off HTML5 data attributes:
if(originalCheckBox.data('on')){
labels[0] = originalCheckBox.data('on');
labels[1] = originalCheckBox.data('off');
}
else labels = options.labels;
// Creating the new checkbox markup:
var checkBox = $('<span>',{
className : 'tzCheckBox '+(this.checked?'checked':''),
html: '<span class="tzCBContent">'+labels[this.checked?0:1]+
'</span><span class="tzCBPart"></span>'
});
// Inserting the new checkbox, and hiding the original:
checkBox.insertAfter(originalCheckBox.hide());
checkBox.click(function(){
checkBox.toggleClass('checked');
var isChecked = checkBox.hasClass('checked');
// Synchronizing the original checkbox:
originalCheckBox.attr('checked',isChecked);
checkBox.find('.tzCBContent').html(labels[isChecked?0:1]);
});
// Listening for changes on the original and affecting the new one:
originalCheckBox.bind('change',function(){
checkBox.click();
});
});
};
})(jQuery);
このスクリプトに付随する CSS もありますが、重要ではないため省略します。
最後に、jQuery スクリプトがチェックボックスに対して行う処理は次のとおりです。
<input id="on_off_on" class="lesson" value="lesson11-1" name="forexadvanced[]" type="checkbox" style="display: none; ">
<span classname="tzCheckBox checked" class=""><span class="tzCBContent">Disable</span><span class="tzCBPart"></span></span>
チェックボックスがスライダーに変更されると、.change() 関数はチェックボックスのステータスの変化を検出しなくなりました。
.change() 関数を機能させるにはどうすればよいですか、または使用できる代替関数ですか?