質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1489閲覧

フォームのインプット要素「text」「select」「radio」「checkbox」の残り項目数をIE11でも表示したい

kenzozo

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/09/23 06:25

###前提・実現したいこと
以下URLを参考にさせていただき、インプット要素「text」「select」「radio」「checkbox」の残り項目数を表示させる機能を実装するテストを行いました。
https://teratail.com/questions/63818
https://jsfiddle.net/6j0cb1ow/1/

Chrome、Firefoxでは問題なく機能するのですが、IE11では全く機能しませんでした。

お手数おかけしますが、どなたかご教示いただきたく存じます。

実現したいこと
・必須項目の残り項目数を表示させたい
・チェックボックス、ラジオボタンは各項目ひとつでもチェックを入れたら残りの項目数を「1」減らす
・IE11でも動作させたい

###発生している問題・エラーメッセージ

Chromeでは問題なく、残りの項目数を表示させることができますが、IE11では機能しません。

###該当のソースコード

HTML

1<form action=""> 2<!--残りの項目数を.nemberのところに表示--> 3<div class="number">.number</div> 4 <table> 5 <tr> 6 <th>ラジオボタン1</th> 7 <td> 8 <label><input type="radio" name="radio1">1-1</label> 9 <label><input type="radio" name="radio1">1-2</label> 10 <label><input type="radio" name="radio1">1-3</label> 11 </td> 12 </tr> 13 <tr> 14 <th>ラジオボタン2</th> 15 <td> 16 <label><input type="radio" name="radio2">2-1</label> 17 <label><input type="radio" name="radio2">2-2</label> 18 <label><input type="radio" name="radio2">2-3</label> 19 </td> 20 </tr> 21 <tr> 22 <th>テキスト1</th> 23 <td><input name="text1" type="text" size="20" value="" /></td> 24 </tr> 25 26 <!--セレクト--> 27 <tr> 28 <th>セレクト1</th> 29 <td><select name="select1"> 30 <option value="" selected="selected">-- 選択してください --</option> 31 <option value="北海道">北海道</option> 32 <option value="青森県">青森県</option> 33 <option value="岩手県">岩手県</option> 34 <option value="宮城県">宮城県</option> 35 <option value="秋田県">秋田県</option> 36 <option value="山形県">山形県</option> 37 <option value="福島県">福島県</option> 38 <option value="茨城県">茨城県</option> 39 <option value="栃木県">栃木県</option> 40 <option value="群馬県">群馬県</option> 41 <option value="埼玉県">埼玉県</option> 42 <option value="千葉県">千葉県</option> 43 <option value="東京都">東京都</option> 44 <option value="神奈川県">神奈川県</option> 45 <option value="新潟県">新潟県</option> 46 <option value="富山県">富山県</option> 47 <option value="石川県">石川県</option> 48 <option value="福井県">福井県</option> 49 <option value="山梨県">山梨県</option> 50 <option value="長野県">長野県</option> 51 <option value="岐阜県">岐阜県</option> 52 <option value="静岡県">静岡県</option> 53 <option value="愛知県">愛知県</option> 54 <option value="三重県">三重県</option> 55 <option value="滋賀県">滋賀県</option> 56 <option value="京都府">京都府</option> 57 <option value="大阪府">大阪府</option> 58 <option value="兵庫県">兵庫県</option> 59 <option value="奈良県">奈良県</option> 60 <option value="和歌山県">和歌山県</option> 61 <option value="鳥取県">鳥取県</option> 62 <option value="島根県">島根県</option> 63 <option value="岡山県">岡山県</option> 64 <option value="広島県">広島県</option> 65 <option value="山口県">山口県</option> 66 <option value="徳島県">徳島県</option> 67 <option value="香川県">香川県</option> 68 <option value="愛媛県">愛媛県</option> 69 <option value="高知県">高知県</option> 70 <option value="福岡県">福岡県</option> 71 <option value="佐賀県">佐賀県</option> 72 <option value="長崎県">長崎県</option> 73 <option value="熊本県">熊本県</option> 74 <option value="大分県">大分県</option> 75 <option value="宮崎県">宮崎県</option> 76 <option value="鹿児島県">鹿児島県</option> 77 <option value="沖縄県">沖縄県</option> 78 </select></td> 79 </tr> 80 81 <!--チェックボックス--> 82 <tr> 83 <th>チェックボックス1</th> 84 <td> 85 <label><input type="checkbox" name="cb1" value="1">1-1</label> 86 <label><input type="checkbox" name="cb1" value="2">1-2</label> 87 <label><input type="checkbox" name="cb1" value="3">1-3</label> 88 </td> 89 </tr> 90 </table> 91</form>

JavaScript

1$( _=> { 2 $( 'form' ).each( ( i, element ) => { 3 const $_inputs = $( 'input, textarea, select', element ); 4 const $_input_textarea_select = $_inputs.not( '[type="radio"], [type="checkbox"]' ); 5 const radio_names = $.unique( $( '[type="radio"], [type="checkbox"]', element ).map( ( i, e ) => e.name ).get() ); 6 $_inputs.on( 'input change', _=> { 7 let len = $_input_textarea_select.length + radio_names.length; 8 let count = len; 9 $_input_textarea_select.each( ( i, ele ) => { 10 if ( $.trim( $( ele ).val() ) ) { count--; } 11 } ); 12 $.each( radio_names, ( i, v ) => { 13 if ( $_inputs.filter( '[name="' + v + '"]:checked' ).length ) { count--; } 14 } ); 15 $( '.number', element ).html( '残り:' + count + ' / ' + len ); 16 } ).change(); 17 } ); 18} );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんな感じでどうでしょうか?

javascript

1 2document.addEventListener('change',function(e){ 3 var t=e.target; 4 if(t.nodeName=="INPUT" || t.nodeName=="SELECT"){ 5 var c=0; 6 var f=t.form; 7 Array.prototype.map.call(f.querySelectorAll('input[type=text],select'),function(i){ 8 if(i.value==="") c++; 9 }); 10 var ex=[]; 11 for(var i=0;i<f.length;i++){ 12 if(f[i].type=="checkbox" || f[i].type=="radio"){ 13 ex.push(f[i].name); 14 } 15 } 16 ex=ex.filter(function(i,j,k){ 17 return k.indexOf(i) === j; 18 }); 19 ex.map(function(i){ 20 if(f.querySelector('[name="'+i+'"]:checked')==null) c++; 21 }); 22 console.log(c); 23 } 24}); 25

投稿2017/09/25 04:17

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenzozo

2017/09/27 01:48

yambejpさん ご回答ありがとうございます。 上記コード試したところ、実現できました! コードの中でよくわからない部分もあったので、調べてみます。 助けていただき、ありがとうございました。
guest

0

ベストアンサー

もしかして、上記のコードをそのままIE11で実行しようとしているのでしょうか?
であれば、IE11はアローファンクションに対応していないので、Typescript、もしくはBabelなどのトランスパイラを通すか、もしくはアローファンクションの箇所を普通のファンクションに変更するといった対応が必要となります。

投稿2017/09/23 09:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenzozo

2017/09/27 01:42

Tak_Matzさん レスが遅れてしまいました。 > 上記のコードをそのままIE11で実行しようとしているのでしょうか? そのまま実行しようとしておりました。アローファンクションはIE11に対応していないのですね。 修正したところ無事、IE11でも動作しました! この度は調べる良い機会をいただき、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問