私のページには、チェックボックス、ラジオボタン、テキストフィールドがあります。彼らはすべて、idの最後に「_boom」を付け加えています。これらの入力のいずれかが元の値ではないかどうかを検出したい場合は、そのページの「保存」ボタンにCSSを適用します。ユーザーが変更を元に戻し、すべての入力が元の値になっている場合は、CSSを元に戻します。少なくとも1つの入力がオリジナルでない場合、どのようにリンクにCSSを適用できますか?すべての入力がオリジナルの場合、その変更を取り消しますか?
私は以下のコードを締結しました。しかし、3つのチェックボックスをチェックしてみましょう。最初のボックスをチェックすると、CSSが変更されます。良い!私は2番目と3番目のボックスをチェックします。 CSSは同じままです。良い!しかし、ボックスの1つを選択解除すると、CSSが元に戻ります。悪い!すべての変更を元に戻す場合にのみ、CSSを元に戻す必要があります。
$('[id*="_boom"]').change(function() {
var sType = $(this).prop('type'); //get the type of attribute we're dealing with
if(sType === "checkbox" || sType === "radio"){ //checkbox or radio type
var originalCheckedState = $(this).prop("defaultChecked");
var currentCheckedState = $(this).prop("checked");
if(currentCheckedState !== originalCheckedState){
$("a#save").css("color","#CCCCCC");
}
else {
$("a#save").css("color","black");
}
}
if(sType === "text"){ //text type
var originalValue = $(this).prop("defaultValue");
var currentValue = $(this).val();
if(currentValue !== originalValue){
$("a#save").css("color","#CCCCCC");
}
else {
$("a#save").css("color","black");
}
}
});
#save {
color: black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" id="check_boom" />
<input type="checkbox" id="check1_boom" />
<input type="checkbox" id="check2_boom" />
<input type="radio" id="radio_boom" />
<input type="text" defaultValue="test" id="text_boom" />
<input type="text" defaultValue="test" id="text2_boom" />
<a href="http://www.google.com" id="save">Save</a>
です。しかし、入力はdivにラップされます。私はあなたの 'フォーム'を 'div'に置き換え、まだ動作します。あなたはそのアプローチの問題を見ますか? – user3430245
問題はありません..それが動作する限り:) –