teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

補足の追加。

2017/03/22 14:06

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -83,4 +83,16 @@
83
83
  } ).click();
84
84
  } );
85
85
  } ); // 未テスト
86
- ```
86
+ ```
87
+
88
+
89
+
90
+ 【jQueryのoff()を使いこなす - to-R】
91
+ [http://blog.webcreativepark.net/2015/08/01-115625.html](http://blog.webcreativepark.net/2015/08/01-115625.html)
92
+
93
+ 【.off() | jQuery 1.9 日本語リファレンス | js STUDIO】
94
+ [http://js.studio-kingdom.com/jquery/events/off](http://js.studio-kingdom.com/jquery/events/off)
95
+
96
+ 【.off() | jQuery API Documentation】
97
+ [http://api.jquery.com/off/](http://api.jquery.com/off/)
98
+

1

ミスがあったため修正。

2017/03/22 14:06

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -44,4 +44,43 @@
44
44
  } ).change();
45
45
  } );
46
46
  } ); // 未テスト
47
+ ```
48
+
49
+ ---
50
+
51
+ **追記:**
52
+
53
+ `$_inputs.on` を忘れていました。
54
+
55
+ ```JavaScript
56
+ $( function() {
57
+ $( 'form' ).each( function(i, element) {
58
+ const tgt = '[name="L_NAME"], [name="F_NAME"], [name="L_KANA"], [name="F_KANA"], [name="PC_MAIL"], [name="PC_MAIL_CONFIRM1"], [name="PC_MAIL_CONFIRM2"], [name="ZIP"], [name="ADDR2"], [name="TEL"], [name="PASSWORD"], [name="PASSWORD2"], [name="ADDR1"], [name="KESSAI_ID"]';
59
+ const add = ', [name="CREDIT_COUNT"], [name="SECURITY_CD"], [name="CREDIT_NAME"], [name="CREDIT_NO"], [name="CREDIT_LIMIT_MONTH"], '[name="CREDIT_LIMIT_YEAR"]';
60
+ let $_inputs, $_input_textarea_select;
61
+ //radio,checkの要素を指定
62
+ const radio_names = $.unique( $( '[name="KESSAI_ID"]', element ).map( function( i, e ) { return e.name; } ).get() );
63
+
64
+ //クレジットカードにチェックを入れたらカウントする要素を追加
65
+ $( 'input[value="51"]' ).on( 'click', function() {
66
+ if ( $( this ).prop( 'checked' ) == true ) {
67
+ $_inputs = $( tgt + add, element );
68
+ } else {
69
+ $_inputs = $( tgt, element );
70
+ }
71
+ $_input_textarea_select = $_inputs.not( '[name="KESSAI_ID"]' );
72
+ $_inputs.off( 'input.tgt change.tgt' ).on( 'input.tgt change.tgt', function() {
73
+ let len = $_input_textarea_select.length + radio_names.length;
74
+ let count = len;
75
+ $_input_textarea_select.each( function(i, ele) {
76
+ if ( $.trim( $( ele ).val() ) ) { count--; }
77
+ } );
78
+ $.each( radio_names, function(i, v) {
79
+ if ( $_inputs.filter( '[name="' + v + '"]:checked' ).length ) { count--; }
80
+ } );
81
+ $( '.number', element ).html( count );
82
+ } ).change();
83
+ } ).click();
84
+ } );
85
+ } ); // 未テスト
47
86
  ```