私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.105 +

みんなの評価 :
レスフィルター : (試験中)
やっぱりSafariでは機能はあるがsubmitボタン押下時に検証しないようだ。invalidイベントが発火しない。
windows版のSafari5だからかな。iPhoneもダメだったが、macのSafari6はどう?
以下検証コード
<form><input required><input type="submit" value="送信"></form>
<script>
var fm = document.forms[0];
if ( typeof fm.checkValidity === "function" ) {
var inputRequired = fm.elements[0];
var testInvalidHandler = function(e) { alert("fired invalid event"); return false;};
inputRequired.addEventListener("invalid", testInvalidHandler);
var supported = fm.checkValidity() === false && inputRequired.validity.valid === false;
alert("HTML5 Forms validation is " + (supported ? "supported" : "not supported"));
//inputRequired.removeEventListener("invalid", testInvalidHandler);
}
else { /*IE-9*/
alert("HTML5 Forms validation is not supported");
}
</script>
Safariを含む対応ブラウザでは次の順でアラートが出る
1. "fired invalid event" ※checkValidity()の際に発火
2. "HTML5 Forms validation is supported"
windows版のSafari5だからかな。iPhoneもダメだったが、macのSafari6はどう?
以下検証コード
<form><input required><input type="submit" value="送信"></form>
<script>
var fm = document.forms[0];
if ( typeof fm.checkValidity === "function" ) {
var inputRequired = fm.elements[0];
var testInvalidHandler = function(e) { alert("fired invalid event"); return false;};
inputRequired.addEventListener("invalid", testInvalidHandler);
var supported = fm.checkValidity() === false && inputRequired.validity.valid === false;
alert("HTML5 Forms validation is " + (supported ? "supported" : "not supported"));
//inputRequired.removeEventListener("invalid", testInvalidHandler);
}
else { /*IE-9*/
alert("HTML5 Forms validation is not supported");
}
</script>
Safariを含む対応ブラウザでは次の順でアラートが出る
1. "fired invalid event" ※checkValidity()の際に発火
2. "HTML5 Forms validation is supported"
ジオコーダーで匿名関数の戻り値(latlng)を関数の呼び出し元にリターンさせたいのですが、
やり方が分かりません。どーやって受けたら良いんでしょうか?
a=(function(results, status)())の様な形で受けようと思うとジオコーディングでエラーが出ます。
function codeAddress(address) {
geocoder.geocode({'address': address},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {var latlng=results[0].geometry.location; return latlng.toString();}
else {alert(status);}
});
}
やり方が分かりません。どーやって受けたら良いんでしょうか?
a=(function(results, status)())の様な形で受けようと思うとジオコーディングでエラーが出ます。
function codeAddress(address) {
geocoder.geocode({'address': address},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {var latlng=results[0].geometry.location; return latlng.toString();}
else {alert(status);}
});
}
>>660
↓こういうこと?
function codeAddress(address) {
var latlng;
geocoder.geocode({'address': address},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) { lating = results[0].geometry.location.toString(); }
else {alert(status);}
});
return latlng;
}
↓こういうこと?
function codeAddress(address) {
var latlng;
geocoder.geocode({'address': address},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) { lating = results[0].geometry.location.toString(); }
else {alert(status);}
});
return latlng;
}
>>665
いや、それとは関係なくundefinedなんです。
いや、それとは関係なくundefinedなんです。
ごめんなさい。
半角スペースが読み込まれずにかなり読みにくくなってしまいました。
半角スペースが読み込まれずにかなり読みにくくなってしまいました。
>>667
ソース自体エラーが出る訳じゃないんですが、latlngの値の取り方が分からないんです。
ソース自体エラーが出る訳じゃないんですが、latlngの値の取り方が分からないんです。
>>654
Mac版Safari 6も同じような感じ。User-Agentで判断するしかないんじゃないかなあ。
Mac版Safari 6も同じような感じ。User-Agentで判断するしかないんじゃないかなあ。
>>670
そのコールバック関数って非同期で呼ばれてるってことはない?
そのコールバック関数って非同期で呼ばれてるってことはない?
>>668
'smtpserver': 'smtp.mail.yahoo.co.jp'
'smtpserver': 'smtp.mail.yahoo.co.jp'
>>672
Safari6も同じか~。試してもらってありがとうです。
AppleのサイトではSafari搭載の先進的機能としてフォーム検証機能もリストしてるんだが
実際どういう動作になってるのか・・・
ともかくUA判別は最後の砦として、簡易だが次のように考えてみた(インデントは全角空白)
<form><input name="name" required><input type="email" name="email" required><input type="submit" value="submit"></form>
<script>
var fm = document.forms[0];
var canUseHTML5FormsValidation = typeof fm.checkValidity === "function";
fm.addEventListener("submit",function(e){
console.log("fired submit event");
if ( canUseHTML5FormsValidation ) {
for ( var i=0,l=this.elements.length; i<l; i++ ) {
var element = this.elements[i];
if ( element.willValidate && !element.validity.valid ) {
console.log("[" + element.name + "] " + element.validationMessage);
}
}
} else { /* 従来どおりのJS検証 */ }
e.preventDefault();
});
</script>
対応ブラウザで不正な入力があればsubmitハンドラ実行前に中断されるので
ハンドラが呼ばれるときには必ず検証をパスしており、エレメントのvalidity.validがtrueになっている。
Safariではsubmitボタン押下で検証しないので不正な入力はfalseのままであり
メッセージがセットされた状態になっている。
Safari6も同じか~。試してもらってありがとうです。
AppleのサイトではSafari搭載の先進的機能としてフォーム検証機能もリストしてるんだが
実際どういう動作になってるのか・・・
ともかくUA判別は最後の砦として、簡易だが次のように考えてみた(インデントは全角空白)
<form><input name="name" required><input type="email" name="email" required><input type="submit" value="submit"></form>
<script>
var fm = document.forms[0];
var canUseHTML5FormsValidation = typeof fm.checkValidity === "function";
fm.addEventListener("submit",function(e){
console.log("fired submit event");
if ( canUseHTML5FormsValidation ) {
for ( var i=0,l=this.elements.length; i<l; i++ ) {
var element = this.elements[i];
if ( element.willValidate && !element.validity.valid ) {
console.log("[" + element.name + "] " + element.validationMessage);
}
}
} else { /* 従来どおりのJS検証 */ }
e.preventDefault();
});
</script>
対応ブラウザで不正な入力があればsubmitハンドラ実行前に中断されるので
ハンドラが呼ばれるときには必ず検証をパスしており、エレメントのvalidity.validがtrueになっている。
Safariではsubmitボタン押下で検証しないので不正な入力はfalseのままであり
メッセージがセットされた状態になっている。
ぶっちゃけブラウザ経由しなくても送信できるんだから最終的にはサーバ側で処理しないと
JavaScript無効の環境もあるかもしれないし、
あくまで「機能向上」の観点で行うのがいいと思うよ
その場でバリデーションの結果を反映させることができ、わざわざユーザーが送信しなくても
事前に間違いが分かる、という程度だと思ったほうがいい。
結局最終的なバリデーションはサーバーでやらなくちゃいけないんだし。
そう考えると、「ユーザーの利便性」にどの程度労力をかけられるかということにもなるな。
あくまで「機能向上」の観点で行うのがいいと思うよ
その場でバリデーションの結果を反映させることができ、わざわざユーザーが送信しなくても
事前に間違いが分かる、という程度だと思ったほうがいい。
結局最終的なバリデーションはサーバーでやらなくちゃいけないんだし。
そう考えると、「ユーザーの利便性」にどの程度労力をかけられるかということにもなるな。
>>679
ジオコード系メソッドは非同期
http://sites.google.com/site/gmapsapi3/Home/services
だからじゃね?
値返すのをやめにして、コールバックを引き受ける形にしたほうが良いと思う
ジオコード系メソッドは非同期
http://sites.google.com/site/gmapsapi3/Home/services
だからじゃね?
値返すのをやめにして、コールバックを引き受ける形にしたほうが良いと思う
>>681
function codeAddress(address) { ~ }
codeAddress(add);
alert(latlng);
ではなく、
function codeAddress(addressn func) { ~ ; func(); }
codeAddress(add, function(){
alert(latlng);
});
こう
function codeAddress(address) { ~ }
codeAddress(add);
alert(latlng);
ではなく、
function codeAddress(addressn func) { ~ ; func(); }
codeAddress(add, function(){
alert(latlng);
});
こう
あるいは、コールバック関数を登録するオブジェクトを返すようにして、
codeAddress 呼び出し後に登録。
codeAddressのfunction(results, status)ではそのオブジェクトに登録されているコールバック関数を呼び出す。
まあ、jQuery.Deferred のことなんだけどね。
codeAddress 呼び出し後に登録。
codeAddressのfunction(results, status)ではそのオブジェクトに登録されているコールバック関数を呼び出す。
まあ、jQuery.Deferred のことなんだけどね。
>>682-684
ありがとうございます。ちょっと理解不足なんで修業してきます。
ありがとうございます。ちょっと理解不足なんで修業してきます。
よろしくお願いします
【環境】Win7 Chrome, HTML5 form, UTF8
【何をしたのか】
ソースはチェックボックス等の選択で出力結果を得るフォーム
チェックボックスvalue に名称を格納していて & を含むもの有り
構文チェックでエラーが出たので '&' に書き換え
しかしJavaScriptの実行結果は '&' がそのまま出力
【期待する結果】'& の出力文字を & にしたい
【サンプルコード】
<input type="checkbox" name="chkItem" value="Book & Magazine">Book & Magazine
document.hoge.txtResult.value += document.hoge.chkItem[i].value;
【環境】Win7 Chrome, HTML5 form, UTF8
【何をしたのか】
ソースはチェックボックス等の選択で出力結果を得るフォーム
チェックボックスvalue に名称を格納していて & を含むもの有り
構文チェックでエラーが出たので '&' に書き換え
しかしJavaScriptの実行結果は '&' がそのまま出力
【期待する結果】'& の出力文字を & にしたい
【サンプルコード】
<input type="checkbox" name="chkItem" value="Book & Magazine">Book & Magazine
document.hoge.txtResult.value += document.hoge.chkItem[i].value;
失敗した失敗した失敗した失敗した
>>688
Firefox19.0.2でも再現出来ない
というか、&と書いたらふつうにアンパサンドになっちゃいそうなもんだけど
http://jsfiddle.net/zaA6u/1/
>>688
Firefox19.0.2でも再現出来ない
というか、&と書いたらふつうにアンパサンドになっちゃいそうなもんだけど
http://jsfiddle.net/zaA6u/1/
読み込んでエラーが出ないというのは構文エラーが含まれてないというだけ。
実行したときにエラーが出たら、その実行しているコードのどこかが悪い。
コードを調べてエラーを取り除く技術がないのなら、初歩に戻って勉強する。
それで、このidcheckは何をしてるのか説明してみなよ。
実行したときにエラーが出たら、その実行しているコードのどこかが悪い。
コードを調べてエラーを取り除く技術がないのなら、初歩に戻って勉強する。
それで、このidcheckは何をしてるのか説明してみなよ。
>>699
「クリックイベントを発生させる」というのは、
ライブラリを使わない限りクロスブラウザ対応が面倒だとは言っておく
AとBどっちを表示するかの判定については、
http://localhost/index.html#planA
http://localhost/index.html#planB
などとしてlocation.hashを見てやればいい
「クリックイベントを発生させる」というのは、
ライブラリを使わない限りクロスブラウザ対応が面倒だとは言っておく
AとBどっちを表示するかの判定については、
http://localhost/index.html#planA
http://localhost/index.html#planB
などとしてlocation.hashを見てやればいい



類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.122 + (116) - [95%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [95%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.126 + (348) - [95%] - 2023/1/12 17:00
トップメニューへ / →のくす牧場書庫について