チェックボックスで差引き値を計算し、
さらに差引き値を一定値以下にしないものを制作したいとおもいます。
チェックボックスごとに決まった値が引かれるものと、
チェックボックスに2つ以上チェックで一定値が引かれる2種類が希望です。
現在、別サイトにて参考にさせていただきました以下のソースとなっておりますが、
この形には拘りません。
数値、内容等は仮のものです。
完成形イメージを画像添付致します。
ご回答、よろしくお願いいたします。
<script language="JavaScript">
<!--
plice=new Array();
plice[0]=0.5;
plice[1]=0.3;
plice[2]=0.2;
function keisan(){
goukei=2.5;
for(i=0;i<=2;i++){
if(document.myform.elements[i].checked==true){
goukei=goukei-plice[i];
}
}
document.myform.total.value=goukei.toFixed(1);
}
//-->
</script>
<form name="myform">
<table cellpadding="1" cellspacing="0" border="0">
<tr>
<td align="left" nowrap><font color="#999999">◆</font>イモ(1500円)</td>
<td align="left"><input type="checkbox" onclick="keisan()"> 箱</td>
</tr>
<tr>
<td align="left"><font color="#999999">◆</font>魚(4000円)</td>
<td><input type="checkbox" onclick="keisan()"> 匹</td>
</tr>
<tr>
<td align="left"><font color="#999999">◆</font>ウニ(300円)</td>
<td><input type="checkbox" onclick="keisan()"> 個</td>
</tr>
<tr>
<td align="left"><font color="#ff0000">■</font><b><font color="#ff0000">合計金額</font></b></td>
<td align="left"><input type="text" name="total" value="2.5"> 円</td>
</tr>
</table>
</form>
No.3ベストアンサー
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"><html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title></title>
<script type="text/javascript">
//@cc_on
document./*@if (@_jscript) attachEvent ('on' + @else@*/ addEventListener ( /*@end@*/ 'click', function(evt){
var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;
var f, i, s, v, j;
if ( t.type != 'checkbox' ) {
return;
}
s = t.form.elements;
if ( /(^| )Check1( |$)/.test( t.form.className ) ) {
f = parseFloat( s['VALUE'].defaultValue );
j = 0;
for ( i = 0; i < s.length; ++ i ) {
if ( s[i].type != 'checkbox' ) continue;
if ( s[i].checked ) {
j ++;
}
}
f -= 0.5 * Math.floor( j / 2 );
s['VALUE'].value = f < 2.0 ? Number(2.0).toFixed(1) : f.toFixed(1);
} else if ( /(^| )Check2( |$)/.test( t.form.className ) ) {
f = parseFloat( s['VALUE'].defaultValue );
for ( i = 0; i < s.length; ++ i ) {
if ( s[i].type != 'checkbox' ) continue;
if ( s[i].checked ) {
f -= parseFloat(s[i].value);
}
}
s['VALUE'].value = f < 2.0 ? Number(2.0).toFixed(1) : f.toFixed(1);
}
}, false );
document./*@if (@_jscript) attachEvent ('on' + @else@*/ addEventListener ( /*@end@*/ 'submit', function(evt){
var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;
if ( /(^| )Check1( |$)/.test( t.className ) || /(^| )Check2( |$)/.test( t.className ) ) {
evt./*@if(1) returnValue = false @else@*/preventDefault ()/*@end@*/;
}
}, false );
</script>
</head>
<body>
<form action="#" class="Check1">
<div>
<label>1</label><input type="checkbox" name="CK1_1"><br>
<label>2</label><input type="checkbox" name="CK1_2"><br>
<label>3</label><input type="checkbox" name="CK1_3"><br>
<input type="text" name="VALUE" value="2.5">
</div>
</form>
<form action="#" class="Check2">
<div>
<label>1</label><input type="checkbox" name="CK1_1" value="0.3"><br>
<label>2</label><input type="checkbox" name="CK1_2" value="0.3"><br>
<label>3</label><input type="checkbox" name="CK1_3" value="0.2"><br>
<label>4</label><input type="checkbox" name="CK1_4" value="0.2"><br>
<label>5</label><input type="checkbox" name="CK1_5" value="0.2"><br>
<label>6</label><input type="checkbox" name="CK1_6" value="0.1"><br>
<label>7</label><input type="checkbox" name="CK1_7" value="0.1"><br>
<input type="text" name="VALUE" value="2.5">
</div>
</form>
</body>
</html>
yuu_x様
丁寧なご回答ありがとうございます。
希望の形での動作となりました。
jsの経験がない中での作業で
素早く、的確なコードをいただき大変助かりました。
ありがとうございました。
No.2
- 回答日時:
数字の差し替えとは具体的にどのような内容になりますでしょうか?
if ( /(^| )Check1( |$)/.test( t.form.className ) || /(^| )Check2( |$)/.test( t.form.className ) ) {
f = parseFloat( s['VALUE'].defaultValue );
for ( i = 0; i < s.length; ++ i ) {
if ( s[i].type != 'checkbox' ) continue;
if ( s[i].checked ) {
f -= parseFloat(s[i].value);
}
}
s['VALUE'].value = f < 2.0 ? Number(2.0).toFixed(1) : f.toFixed(1);
}
あたりを差し替えれば可能ですが、
また、勝手な判断で追加してしまったのですが、サーバーサイドスクリプトへ送信する場合は、
document./*@if (@_jscript) attachEvent ('on' + @else@*/ addEventListener ( /*@end@*/ 'submit', function(evt){
var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;
if ( /(^| )Check1( |$)/.test( t.className ) || /(^| )Check2( |$)/.test( t.className ) ) {
evt./*@if(1) returnValue = false @else@*/preventDefault ()/*@end@*/;
}
}, false );
の部分を削除してください。
この回答への補足
yuu_x様
ご回答ありがとうございます。
>>数字の差し替えとは具体的にどのような内容になりますでしょうか?
例えばチェックボックスが6つで、2つ以上にチェックで合計値から-0.5減少など、
現在、check1はいずれか1つで数値が減少していますが、
これを2つ以上にチェックで数値を減少にしたいものです。
よろしくお願いいたします。
No.1
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"><html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title></title>
<script type="text/javascript">
//@cc_on
document./*@if (@_jscript) attachEvent ('on' + @else@*/ addEventListener ( /*@end@*/ 'click', function(evt){
var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;
var f, i, s;
if ( t.type != 'checkbox' ) {
return;
}
s = t.form.elements;
if ( /(^| )Check1( |$)/.test( t.form.className ) || /(^| )Check2( |$)/.test( t.form.className ) ) {
f = parseFloat( s['VALUE'].defaultValue );
for ( i = 0; i < s.length; ++ i ) {
if ( s[i].type != 'checkbox' ) continue;
if ( s[i].checked ) {
f -= parseFloat(s[i].value);
}
}
s['VALUE'].value = f < 2.0 ? Number(2.0).toFixed(1) : f.toFixed(1);
}
}, false );
document./*@if (@_jscript) attachEvent ('on' + @else@*/ addEventListener ( /*@end@*/ 'submit', function(evt){
var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;
if ( /(^| )Check1( |$)/.test( t.className ) || /(^| )Check2( |$)/.test( t.className ) ) {
evt./*@if(1) returnValue = false @else@*/preventDefault ()/*@end@*/;
}
}, false );
</script>
</head>
<body>
<form action="#" class="Check1">
<div>
<label>1</label><input type="checkbox" name="CK1_1" value="0.5"><br>
<label>2</label><input type="checkbox" name="CK1_2" value="0.5"><br>
<label>3</label><input type="checkbox" name="CK1_3" value="0.5"><br>
<input type="text" name="VALUE" value="2.5">
</div>
</form>
<form action="#" class="Check2">
<div>
<label>1</label><input type="checkbox" name="CK1_1" value="0.3"><br>
<label>2</label><input type="checkbox" name="CK1_2" value="0.3"><br>
<label>3</label><input type="checkbox" name="CK1_3" value="0.2"><br>
<label>4</label><input type="checkbox" name="CK1_4" value="0.2"><br>
<label>5</label><input type="checkbox" name="CK1_5" value="0.2"><br>
<label>6</label><input type="checkbox" name="CK1_6" value="0.1"><br>
<label>7</label><input type="checkbox" name="CK1_7" value="0.1"><br>
<input type="text" name="VALUE" value="2.5">
</div>
</form>
</body>
</html>
<!-- 全角スペースでインデントしてありますので、半角スペース等に置換してからご利用ください -->
この回答への補足
お礼を申し上げた後で申し訳ないのですが、
Check1に対して、チェックボックスに2つ以上チェックで
数字が差し替わるにはどう変更したらいいでしょうか?
重ねてのご質問ですみませんが、
よければご回答いただければと思います。
よろしくお願いいたします。
素早く、的確なご回答をありがとうございました。
いただいたソースをそのまま入れて、希望通りの動作となりましたので、
大変助かりました。
全角スペースでインデントしてありますので、半角スペース等に置換してからご利用ください
最後のこの一文が実はよくわかってなかったりしますが、
これに関してはお任せ致します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
checkboxをクリックしてリロー...
-
チェックボックスの無効化、有効化
-
チェックボックスの未入力チェック
-
contact-form7のプラグインでチ...
-
複数のチェックボックス項目が...
-
チェックボックスのON/OFFに応...
-
フォームのチェックボックスの...
-
チェックボックスに全てチェッ...
-
チェックボックスとラジオボタ...
-
背景色を変えて未入力チェック...
-
プルダウン 項目が多いので先頭...
-
<input>の選択肢をプルダウンメ...
-
TextBoxに半角数字以外を入れた...
-
【jQuery】input nameの文字列...
-
value内に変数を入れたい
-
二つの入力欄に、同時に同じ文...
-
return trueとreturn falseの用...
-
JavaScriptにて動的に配列を作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jsp/Java】チェックボックス...
-
チェックボックスのON/OFFでVal...
-
checkboxをクリックしてリロー...
-
チェックボックスに全てチェッ...
-
JSP内で可変するチェックボック...
-
確認ページからフォームページ...
-
チェックボックスのON/OFFに応...
-
Objective-Cでチェックボックス...
-
EclipseでSpringを使用し、テー...
-
チェックボックスの設定
-
スクリプト内でチェックボック...
-
チェックボックスで合計値を計...
-
背景色を変えて未入力チェック...
-
チェックボックスのグループ化...
-
オフになっているチェックボッ...
-
checkboxの選択数制限と排他処...
-
複数のチェックボックス項目が...
-
Nameは配列で、チェックされた...
-
jquery 診断コンテンツにチェッ...
-
チェックボックスでor検索
おすすめ情報