スマホ・PCで使えるスピンボタンを作りたい
初めての質問です。
目的:htmlの<input type="number">のスピンボタンは、スマホでは表示されないので、スマホでも使えるスピンボタンを作りたい
やったこと:https://kinocolog.com/spinner_btn/
を参考に、htmlを書いた。
発生している問題・エラーメッセージ
+、ーのボタンを押しても数字が増減しない
デフォルトのスピンボタンが消えない
該当のソースコード
<!DOCTYPE html> <html lang=“ja”> <head> <meta charset=“UFT-8”> <title>質問</title> <style type="text/css"> .btnspinner{ -ms-user-select: none; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } .spinner_area input{ padding: 11px; border: 1px solid #ccc; border-radius: 4px; font-size: 18px; width: auto; vertical-align: middle; /* デフォルトのスピナーを消す */ -webkit-appearance: none; -moz-appearance:textfield; } .spinner_area input[type="button"]{ cursor: pointer; } </style> </head> <body> <h1>数字アップダウン</h1> <div class="spinner_area"> <input type="number" value="35" class="counter1" data-max="100" data-min="0"> <input type="button" value="+" class="btnspinner" data-cal="1" data-target=".counter1"> <input type="button" value="-" class="btnspinner" data-cal="-1" data-target=".counter1"> </div> <script type="text/javascript"> $(function(){ var arySpinnerCtrl = []; var spin_speed = 20; //変動スピード //長押し押下時 $('.btnspinner').on('touchstart mousedown click', function(e){ if(arySpinnerCtrl['interval']) return false; var target = $(this).data('target'); arySpinnerCtrl['target'] = target; arySpinnerCtrl['timestamp'] = e.timeStamp; arySpinnerCtrl['cal'] = Number($(this).data('cal')); //クリックは単一の処理に留める if(e.type == 'click'){ spinnerCal(); arySpinnerCtrl = []; return false; } //長押し時の処理 setTimeout(function(){ //インターバル未実行中 + 長押しのイベントタイプスタンプ一致時に計算処理 if(!arySpinnerCtrl['interval'] && arySpinnerCtrl['timestamp'] == e.timeStamp){ arySpinnerCtrl['interval'] = setInterval(spinnerCal, spin_speed); } }, 500); }); //長押し解除時 画面スクロールも解除に含む $(document).on('touchend mouseup scroll', function(e){ if(arySpinnerCtrl['interval']){ clearInterval(arySpinnerCtrl['interval']); arySpinnerCtrl = []; } }); //変動計算関数 function spinnerCal(){ var target = $(arySpinnerCtrl['target']); var num = Number(target.val()); num = num + arySpinnerCtrl['cal']; if(num > Number(target.data('max'))){ target.val(Number(target.data('max'))); }else if(Number(target.data('min')) > num){ target.val(Number(target.data('min'))); }else{ target.val(num); } } }); </script> </body> </html>
自信がない点
CSSやjQueryの埋め込み場所に問題があるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/13 06:38 編集