ネットスケープ・IE両対応のページを作ろうとしているのですが、文字数の判定で困っています。もし知っている方がいれば教えて下さい…。
 INPUT TEXTフォームで文字数制限をしたいのですが、フォームの文字列="よさこい青森"とした場合、document.form.elements.lengthの値が 12文字になるネスケのバージョンは、どこまででしょうか??
細かいバージョンが知りたいです。

 NetscapeCommunicator 4.75では6文字と、Win3.1用Communicator4.01では、12文字になりました。

よろしくおねがいします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

文字数制限をしたいだけならlengthの判定も一緒に


書いちゃえばいいんじゃないでしょうか?
例えば2バイト文字で制限を6文字にするなら、

max = "よさこい青森".length

のmaxを制限値にしてフォームの文字列長と比較するの
です。ブラウザが日本語に対応してなければmaxは12に
なるし、対応してれば6になりますね。

お馬鹿なJavaScriptの制限に、お互い振り回されない
ようにがんばりましょう。
    • good
    • 0

NC4.06で、内部処理がUNICODEになっていると聞いたことがありますので、NC4.06以降で6文字と返却されると考えられます。



4.05と4.06で試してみてはどうでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QINPUTの内容をフォームの送信先に指定したいのですが、やり方がわかり

INPUTの内容をフォームの送信先に指定したいのですが、やり方がわかりません。

検索機能をつけようとしています。
例えば
『ほげほげ』と入力し検索ボタンを押すと、
『key/ほげほげ.html』というファイルを呼び出す。
という風にしたいと思っているのですが、どのようにすればいいのかわからず行き詰っていまってしまいました。
なお、『key/ほげほげ.html』というファイルが呼び出すことができれば、.htaccessで検索できるところまでは完成しているのですが、フォームの送信のところで行き詰っていますす。

ご存知の方がいらっしゃいましたら、お手数ですがご教示ください。
よろしくお願いいたします。

Aベストアンサー

INPUTの内容の取得は
<input type='text' id='key'></input>
に対して

 document.getElementById('key').value

で取得出来ます。

ボタンを押したとき、javascriptの関数を実行するのは、

 <button onclick='func();'>検索</button>

 function func(){
  ---------------
 }

です。

ページ呼び出しなら、

 location.href = URL;

とか、フォームのサブミットを使うなら

 form.action = URL;
 form.submit();

で.......

Qダミーフォームの内容を送信用フォームに受け渡し&文字連結

JavaScriptは超初心者です。想像で喋っておりますので、専門用語等の間違いや見当違いな部分は見逃してください。

比較的安価ですが機能の優れたショッピングカートを使用しております。全てをカートCGIで済ませる他、オリジナルで用意したHTMLからFORMで指定されたCGIに送信することでカートに商品が入る方法も使用でき、現在その方法でショッピングサイトを構築中です。

HTMLでFORM送信する場合、商品名や価格など定められた値のほか、自由項目として5つまで自由にフィールドを増やして、その値をカートに送信することができます。今まではその5つの情報で十分間に合っていたのですが、今回追加を検討している商品の送信したい情報が5つを超えてしまい、その商品だけカートを使わないという方法を取るわけにもいかず、困っています。

▽CGI機能範囲内の送信情報
商品名・価格・数量・option1~5

▽でもこうしたい
商品名・価格・数量・option1~5+追加option6・option7

無理やりoption6・option7を送信しても、ショッピングカート上にはやはりVALUEは表示されませんでした。option1~5という名前で設定されたVALUEしか受け取らないようです。

本当に困り果てていたところ、JavaScriptを使用すればいいのでは?というご意見をいただき、質問させていただきました。

まだまだ長くなりますので、回答1に続きを書きます。

JavaScriptは超初心者です。想像で喋っておりますので、専門用語等の間違いや見当違いな部分は見逃してください。

比較的安価ですが機能の優れたショッピングカートを使用しております。全てをカートCGIで済ませる他、オリジナルで用意したHTMLからFORMで指定されたCGIに送信することでカートに商品が入る方法も使用でき、現在その方法でショッピングサイトを構築中です。

HTMLでFORM送信する場合、商品名や価格など定められた値のほか、自由項目として5つまで自由にフィールドを増やして、その値をカートに...続きを読む

Aベストアンサー

>ラジオボタンを使用
No.4さんのスクリプトを入れるとこんな感じだと思います(スクリプトの部分だけ)

<!--
function func() {
document.F1.opt3.value=getValue( "opt3" ) + "+" + document.F2.opt4.value;
document.F1.submit();
}
function getValue( name ) {
value = "";
e = document.getElementsByName( name );
for( idx=0; idx<e.length; idx++ ) {
if( e[ idx ].checked ) {value += e[ idx ].value;}
}
return( value );
}
// -->

Q【続】ダミーフォームの内容を送信用フォームに受け渡し&文字連結

先日、同じタイトルで質問したものです。以前した質問の内容は、以下でご確認下さい。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2387209

今度は違う問題が発生してしまいました。下記スクリプトを設定した購入ボタン(SUBMIT)を押し、ショッピングカートの画面(CGI)に入ると、きちんとJAVASCRIPTで指定した通りにVALUEの受け渡し・文字連結されていることが確認できました。

次に、カート画面の『前の画面に戻る』(onclickでhistory.go(-1)がシステムで設定されてあり変更不可)を押すと、当然商品オーダー画面に戻り、FORM内容もそのまま残っております。

そこで、もう一度同じ商品を同じ内容で購入、もしくは個数を変更・VALUEを変更などして購入しようとすると、購入個数がダブって送信されてしまいます。個数倍以外におかしい点はありませんでした。

1個購入すると → 2個、10個購入すると → 20個

IE7で確認。FIREFOXでは正常に送信されました。IEの何かバグでしょうか? この重複を防ぐような追記スクリプトがあれば教えてください。よろしくお願いします。

<script type="text/javascript">
<!--
function func() {
document.SELECT.option2.value=getValue( "option2a" ) + "/" + getValue( "option2b" );
document.SELECT.option3.value=document.SELECT.option3a.value + "/" + document.SELECT.option3b.value;
document.SELECT.submit();
}
function getValue( name ) {
value = "";
e = document.getElementsByName( name );
for( idx=0; idx<e.length; idx++ ) {
if( e[ idx ].checked ) {value += e[ idx ].value;}
}
return( value );
}
// -->
</script>

先日、同じタイトルで質問したものです。以前した質問の内容は、以下でご確認下さい。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2387209

今度は違う問題が発生してしまいました。下記スクリプトを設定した購入ボタン(SUBMIT)を押し、ショッピングカートの画面(CGI)に入ると、きちんとJAVASCRIPTで指定した通りにVALUEの受け渡し・文字連結されていることが確認できました。

次に、カート画面の『前の画面に戻る』(onclickでhistory.go(-1)がシステムで設定されてあり変更不可)を押すと、当然商品オ...続きを読む

Aベストアンサー

これとIE6で確認してみましたが現象出ません・・
現象の出る簡単な物を提示してみてください^^;

<html><body>
<script type="text/javascript">
質問内のスクリプト
</script>

</form>
<form name="SELECT" action="cart.cgi">
商品1<input type="hidden" name="sina" value="s1"><br>
価格:49,800円(税込)<input type="hidden" name="kakaku" value="4800"><br>
購入数:<input type="text" size="3" maxlength="3" name="CNT" value="1">個<br>
<input type="hidden" name="option2">
<input type="hidden" name="option3">
<INPUT type="checkbox" name="option2a" value="1">2
<INPUT type="checkbox" name="option2b" value="2">3
<INPUT type="checkbox" name="option3a" value="3">2
<INPUT type="checkbox" name="option3b" value="4">3

<input type="button" value="カートへ" onclick="func()">
</form>


---cart.cgi---
#!/usr/bin/perl
&form_dec;
print "Content-type: text/html\n\n";
print "<html><body>";
print $form{sina}."<br>\n";
print $form{kakaku}."<br>\n";
print $form{CNT}."<br>\n";
print $form{option2}."<br>\n";
print $form{option3}."<br>\n";
print $form{option2a}."<br>\n";
print $form{option2b}."<br>\n";
print $form{option3a}."<br>\n";
print $form{option3b}."<br>\n";
print "</html></body>";

sub form_dec {
local($method);
local($query,@abs,$l_set,$value);
$method = $ENV{'REQUEST_METHOD'};
$method =~ tr/A-Z/a-z/;
if($method eq 'post'){read(STDIN,$query,$ENV{'CONTENT_LENGTH'});}
else{$query=$ENV{'QUERY_STRING'};}
@abs = split(/&/,$query);
foreach (@abs) {
($l_set,$value) = split(/=/,$_);
$value =~ tr/+/ /;
$value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<>/&lt\;&gt\;/g;
$form{$l_set}=$value;
}
}

これとIE6で確認してみましたが現象出ません・・
現象の出る簡単な物を提示してみてください^^;

<html><body>
<script type="text/javascript">
質問内のスクリプト
</script>

</form>
<form name="SELECT" action="cart.cgi">
商品1<input type="hidden" name="sina" value="s1"><br>
価格:49,800円(税込)<input type="hidden" name="kakaku" value="4800"><br>
購入数:<input type="text" size="3" maxlength="3" name="CNT" value="1">個<br>
<input type="hidden" name="option2">
<input ...続きを読む

Qnetscape4.75で強制終了

JSPに埋め込んだjavascriptでnetscape4.75が強制終了してしまうと言う
現象に出会って悩んでいます。
IE5.5、netscape6では、正常に動作します。
問題のjavascript部分です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT Language="JavaScript1.2">
<!--
function centerWin(){
var l =(screen.width-950)/2;
var t =(screen.height-700)/2;
var win = window.open
("注意.htm", "sub", "resizable=yes,width=950,height=650");
win.opener.location.replace("http://特定のHP.html");
win.moveTo(l,t);
win.focus();
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="centerWin()">
</BODY>
</HTML>

何をしているかと言いますと、呼び出されたHTMLのURLを「特定のHP.html」に
変更し、サブウィンドウを新たに作成し、サブウィンドウに「注意.htm」を
表示しサブウィンドウを画面中央に移動させてフォーカスを当てています。
このJSP内のHTML部分が呼び出されると、netscape4.75が強制終了してしまいます。その内容は、以下の通りでした。
例外:アクセス違反(0xc0000005),アドレス:0x00000002
デバッグするためにAlertを1行置きに埋め込み、アクセス違反を起こしている部分をつきとめ、win.opener.location.replace("http://特定のHP.html"); で
起こっていることが、わかりました。
そこで、この部分をlocation.href="http://特定のHP.html";
と変えることで、回避されると思われたのですが、結果は同じでアクセス違反
が、出てしまい、行き詰まっています。
少しでも情報提供していただければありがたいと思います。
よろしくお願いします。
最後に長文になりましたこと、御詫びいたします。

JSPに埋め込んだjavascriptでnetscape4.75が強制終了してしまうと言う
現象に出会って悩んでいます。
IE5.5、netscape6では、正常に動作します。
問題のjavascript部分です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT Language="JavaScript1.2">
<!--
function centerWin(){
var l =(screen.width-950)/2;
var t =(screen.height-700)/2;
var win = window.open
("注意.htm", "sub", "resizable=yes,width=950,height=650");
win.opener....続きを読む

Aベストアンサー

まさかとは思いますが、実際に日本語のファイル名を
使っていたりしませんよね、、、

Qlengthが読めない理由が分からない

lengthが読めない理由が分からない

var divs = document.getElementsByTagName("div");
alert(divs);
for(var i=0; i < divs.childNodes.length; ++i){
  if(divs.childNodes[i].tagName == "h2"){
    a.push = divs[i];
    b.push = divs[i].h2.nodeValue;
    divs[i].style.display = "none";
  }
}

JavaScriptです。
こんなコードを実行すると、forのとこのchildNodes.lengthが読めないとエラーになります。

divsの中身はあるはずだから、読めるんじゃないかと思うのですが。
ちゃんと[object NodeList]と表示されます。

htmlの方には、divは5つぐらいかいてあります。

JavaScriptの挙動がよく分からない……。
chromeでやってますが、firefoxでも動きませんでした。

理由を教えていただけるとうれしいです。
なんか他につっこみたいこともあれば……。
h2をあんな読み方できない、とか。

lengthが読めない理由が分からない

var divs = document.getElementsByTagName("div");
alert(divs);
for(var i=0; i < divs.childNodes.length; ++i){
  if(divs.childNodes[i].tagName == "h2"){
    a.push = divs[i];
    b.push = divs[i].h2.nodeValue;
    divs[i].style.display = "none";
  }
}

JavaScriptです。
こんなコードを実行すると、forのとこのchildNodes.lengthが読めないとエラーになります。

divsの中身はあるはずだから、読めるんじゃないかと思うのですが。
ちゃんと[o...続きを読む

Aベストアンサー

>divs.childNodes

divs[0]~divs[n]がchildeNodesをもっているだけで、
divsはオブジェクトを集合したがただの配列なのでchildNodesを
もっていませんね

フロー的にはh2を含むdivを隠す?
であればh2を拾った方がはやくないですか?

<script>
function hide(){
var h2s = document.getElementsByTagName("h2");
for(var i=0; i < h2s.length; i++){
var n=h2s[i];
var a=new Array();
var b=new Array();
while(n=n.parentNode){
if(n.nodeName=="DIV"){
a.push(n);
b.push(h2s[i].firstChild.nodeValue);
n.style.display = "none";
break;
}
}
}
alert(a[0]);
alert(b[0]);
}
</script>

<div><h2>test1</h2></div>
<div>hogehoge</div>
<div><h2>test2</h2></div>
<div><hr><h2>test3</h2></hr></div>
<input type="button" value="hide" onclick="hide()">

>divs.childNodes

divs[0]~divs[n]がchildeNodesをもっているだけで、
divsはオブジェクトを集合したがただの配列なのでchildNodesを
もっていませんね

フロー的にはh2を含むdivを隠す?
であればh2を拾った方がはやくないですか?

<script>
function hide(){
var h2s = document.getElementsByTagName("h2");
for(var i=0; i < h2s.length; i++){
var n=h2s[i];
var a=new Array();
var b=new Array();
while(n=n.parentNode){
if(n.nodeName=="DIV"){
...続きを読む


人気Q&Aランキング

おすすめ情報