とある入力フォームを作った時の話ですが、送信ボタンを押しても一向に送信されず、原因をあれこれ探っていくと、Chromeのエラーコンソールに何やら出力されていました。 An invalid form control with name='foobar' is not focusable. そして、この問題になったフォームオブジェクトは<div style='display:none'>の中、つまりユーザーからは知覚も操作も不能な場所に置かれていて、そしてHTML5のバリデーション属性がかかっていました。 対策法 もちろん最初からこんなフォームを作ることはないとは思いますが、JavaScriptで制御しているとこのように「見えないコントロールがinvalidとなる」ということは発生してしまいます。対策法を検討してみる過程で、いろいろなものがありました。 novalidate、formnoval
はじめに フォームの入力の際に、入力に間違いがないかプレビュー表示する この機能を実現するためにFileAPIを利用する JavaScriptのFileAPIは2016年3月現在ほぼすべてのブラウザに対応している(IEさえも) 本サンプルコードはjQueryで動作します。 jQueryを使っていないのが知りたい人はこちらのフォームからファイルを選択した際に、submitする前にプレビュー表示する方法(jQuery"無し"版) を参照のこと Demo 動作を確認できるデモはこちら Demo 対象のコード $(function(){ //画像ファイルプレビュー表示のイベント追加 fileを選択時に発火するイベントを登録 $('form').on('change', 'input[type="file"]', function(e) { var file = e.target.files[0],
PxLoader | A Simple JavasScript Preloader#sample1 HTML5ゲームに使えるローディング表示機能付きプレロード用JSライブラリ「PxLoader」 時代はHTML5ですよ奥さん、と電車の中でも聞くようになった今日この頃ですが、HTML5ゲーム等で画像を大量に使う場合でもプレロードして読込状態等も取得できる機能を提供してくれるのがこのライブラリです。 画像に加えてサウンドの読込にも対応しています。 ローディング状態を表示するデモがサイト上で見れます メニュー、ゲーム、トータルといった感じで分割も出来ます。読込に時間がかかってもこういう進捗があれば落ち着きますね ブラウザが対応していないっていうのもあってPCだとまだまだFlashですが、スマホで使っちゃえるかもしれませんね 関連エントリ HTML5のcanvasを使ったアニメーションするタグクラ
Resumable.js: Fault Tolerant Resumable File Uploads in JavaScript - Badass JavaScript ファイルアップロードのレジュームをブラウザ上で行える「Resumable.js」。 HTML5のAPIを使ってこうしたことが実現できるようになるみたいです。 ファイルが大きくなり、回線も太くなりますがブラウザベースだと落ちちゃったらまたやり直しと回線も無駄ですし、何より時間のムダですね。 こういった機能が広まれば沢山の人の無駄を減らせそうです 動作ムービーは以下に。 何年後かには当たり前になっていてそんな時代があったの?ということになるかもしれませんね githubにてソースが公開されています 関連エントリ HTML5ゲームに使えるローディング表示機能付きプレロード用JSライブラリ「PxLoader」 HTML5のcan
いやあ、もうすぐスーパーマリオ3Dワールドの発売日だねえ!って言ったら「もうマリオはいいでしょ…」って言われた kimoto です。 なんでだよ!すっげえ面白そうじゃんかよ!よくないよ! さて、本日はちょっと小ネタで、window.open で開いた窓に対して Post でデータを渡す方法です。 利用場面としては、フォームの確認画面を小窓で開きたい時などですね。 URL にデータを乗っけて Get で開く方法も無くはないですが、データ量に制限もあったりなど、いろいろと問題があります。 ということで、開いた窓に対して Post でデータを投げる方法です。 function open_preview() { window.open("about:blank","preview","width=600,height=450,scrollbars=yes"); document.input_for
文字列内に任意の文字列が存在するか調べるのは、javascript のみならず必ず必要な処理ですね。はりきって調べてみたいと思います。 string.indexOf を使用する /* * 検索対象文字列 */ str = "akawari"; /* * 指定した文字列が存在する位置を検索する */ idx = str.indexOf("aka"); // 見つからなかった場合には -1 が返される if(idx != -1) { alert("文字列 aka が見つかりました"); alert("index = " + idx); // 先頭から見つかったので 0 が返される } 検索結果のインデックスを取得することで、文字列が存在するかを調べることができます。 なお、大文字と小文字は区別されます。 大文字と小文字を区別せずに存在するか調べる 続いて大文字と小文字を区別せずに検索してみたい
JavaScriptでWEBプログラミングをしていると、同期処理、非同期処理が混じるのでややこしい。 例えば、同期処理が三つ続く場合だと、順番に処理が進む。 これは普通の処理だ。 一方、非同期処理が混じると、処理1から実行された非同期処理2が実行中にもかかわらず同期処理3に行ってしまう。 まあ、これで問題ない場合もあるが、同期処理3が非同期処理2の結果を利用する場合には、これでは問題が起こる。 つまり、同期処理3を開始する時点で、非同期処理2が完了している事が保証されないからだ。 この記事ではJavaScriptのPromiseの機能を使って非同期処理の完了を待ってから次の同期処理を実行する手法を紹介したい。 同期処理が非同期処理の結果を使う典型的な例 例えば、以下のようなhtmlだと [クリック] ボタンが表示される。 <button onclick="func1()">クリック</bu
単純にalertを再定義してあげれば上書きできるが、alertの場合(windowsオブジェクト)に属するメソッドの場合delete alertで元のネィティブなメソッドを戻すことができない。 ※ chromeの場合 仕方ないので、元の関数はwindows.nativeAlert = window.alertみたいな感じでオリジナルのメソッドを退避しておく必要がある。 delete alert 参考 http://www.jeffreydoppke.com/labs/javascript-alert-override/js/scripts.js javascript - trying to override alert, it works, but executes twice - Stack Overflow
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>getElementsByTagName の例</title> <script> function getAllParaElems() { const allParas = document.getElementsByTagName("p"); const num = allParas.length; alert(`この文書には ${num} 個の段落があります`); } function div1ParaElems() { const div1 = document.getElementById("div1"); const div1Paras = div1.getElementsByTagName("p"); const num = div1P
お久しぶりです。寺岡です。 たまにはRuby以外の記事も書いてみようと思ったので、 知っておきたいJavaScriptのエスケープ処理に関する小ネタを紹介します。 encodeURI, decodeURI は使わない JavaScriptでURLエンコーディングを行う場合に、encodeURI, decodeURIを使用してはいけません。 これらの関数は「:」や「/」などの、URL上で意味を持つ記号は処理してくれません。 encodeURIComponent, decodeURIComponentを使いましょう。 実例で見てみます。 「あいうえお」という文字列を対象としている場合は結果は同じですが、 「http://」という文字列を対象とした場合、結果が異なることがわかります。 var value; // ------------------------- // ひらがなのURLエンコード
索引 ├ リファレンス目次 ├ アルファベット順 └ 検索 Core:コアとなる仕組み ├ 目次 ├ jQuery(selector) ├ jQuery(html) ├ jQuery(function) ├ jQuery.holdReady() ├ jQuery.noConflict() └ jQuery.sub() 他ページ参照 └ jQuery.when() Selectors:セレクタ └ 目次 基礎 ├ *(すべて) ├ element(html要素) ├ #id名(ID属性) ├ .class名(clas属性) ├ 複数のセレクタ(and) └ 複数のセレクタ(or) 階層関連 ├ 先祖 子孫 ├ >(子要素) ├ +(直近の後要素) └ ~(後要素) 属性 ├ [属性名] ├ [属性名='値'] ├ [属性名!='値'] ├ [属性名^='値'] ├ [属性名$='値'] ├
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く