続いてすいません。

JavaScriptを使って、キーボードの入力をそのまま画面に表示させる
仕掛けを作っています。
もちろんBackSpaceキーも使えて、
入力した字を消したりできるようにしたいのですが、
IEの場合、BackSpaceキーを押すと「戻る」ボタンを押した時と同じ動きをしますよね?
だから、字を消すことができないのです。

どなたかこれを解決する方法をご存知の方がいらっしゃいましたら
ご教授のほど宜しくお願いします。

A 回答 (1件)

つまり、onkeydownイベントが発生したときに、


window.event.keyCodeの値を使って、入力された文字を
HTMLに書き込んでいく、ということですね?
もしそうでなかったらごめんなさい。

で、バックスペースキーを押すと、
window.event.keyCodeの値は8になるようです。
なので、その値が8だった場合のみ、これまで入力された
文字列の最後を切り取るようにすればいいと思います。

そして、イベントが発生したときに実行されるスクリプトの中に、
window.event.returnValue = false;
と書いておくと、ブラウザの規定の動作を取り消すことが
できるので、バックスペースで「戻る」になってしまうことは
ないと思います。

あと、話が複雑になるようで申し訳ありませんが、
onkeydownイベントはshiftキーなどでも発生してしまうようなので、
バックスペースはonkeydownイベントで、
文字の入力はonkeypressイベントで処理するといいと思います。

難しくてわからなかったら、また質問してください。
    • good
    • 0
この回答へのお礼

なるほど!ありがとうございます。
早速試してみたいと思います!

お礼日時:2001/12/18 15:03

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

Qvoid **(char や intのアドレス混在)について

printf("%d",voidd[0]);にてほしい値が表示されません。
どうすればいいですか?
よろしくお願いします。
#include<stdio.h>
int main()
{
/*
Calc.StringExpressionGet("1+((2+34)*2-111*77)*5-67*8/90");
Calc.StringExpressionResolve();
Calc.Print();
*/
int num[3];
num[0]=111;
num[1]=222;
num[2]=333;
char str[4]="ABC";
void **voidd;
voidd=new void*[6];
voidd[0]=(void *)&num[0];
voidd[1]=(void *)&str[0];
voidd[2]=(void *)&num[1];
voidd[3]=(void *)&str[1];
voidd[4]=(void *)&num[2];
voidd[5]=(void *)&str[2];
printf("%d",voidd[0]);
getchar();
return 0;
}

printf("%d",voidd[0]);にてほしい値が表示されません。
どうすればいいですか?
よろしくお願いします。
#include<stdio.h>
int main()
{
/*
Calc.StringExpressionGet("1+((2+34)*2-111*77)*5-67*8/90");
Calc.StringExpressionResolve();
Calc.Print();
*/
int num[3];
num[0]=111;
num[1]=222;
num[2]=333;
char str[4]="ABC";
void **voidd;
voidd=new void*[6];
voidd[0]=(void *)&num[0];
voidd[1]=(void *)&str[0];
voidd[2]=(void *)&num[1];
voidd[3]=(void *)&str[1];
voidd[4]=...続きを読む

Aベストアンサー

No.1です。すみません、間違えました。

*(int*)(voidd[0])

です。

Qボタンかリンクをクリックすると入力フォームに文字入力される仕掛け

ホームページ上でテキストボックスが1つあるのでそこに色名(赤色や青色)などの文字を、ボタンかリンクをクリックするだけで入力されるような仕掛けを作りたいです。
例えば「暖かい色」と書かれた文字かボタンをクリックすれば、テキストボックスに「赤色」、また「お空の色」なら「青」などが入力されるなどです。
多分javaベースが良さそうですが、探しても見つからなかったです。
宜しくお願いします。

Aベストアンサー

こんな感じですか?

---

<html>
<head>
<title>test</title>
<script type="text/javascript">
window.onload = function() {
var buttons = document.getElementById('colors').getElementsByTagName('button');
for (var i = 0, n = buttons.length; i < n; i++) {
buttons[i].onclick = function() {
document.getElementById('result').value = this.value;
}
}
}
</script>
</head>

<body>

<form id="colors" action="#">
<button type="button" value="赤色">暖かい色</button>
<button type="button" value="青色">お空の色</button>
<input id="result" type="text" value="" />
</form>

</body>
</html>

こんな感じですか?

---

<html>
<head>
<title>test</title>
<script type="text/javascript">
window.onload = function() {
var buttons = document.getElementById('colors').getElementsByTagName('button');
for (var i = 0, n = buttons.length; i < n; i++) {
buttons[i].onclick = function() {
document.getElementById('result').value = this.value;
}
}
}
</script>
</head>

<body>

<form id="colors" action="#">
<button type="button" value="赤色">暖かい色</button>
...続きを読む

Qvoid main()って誰が最初?:ANSI-C

ANSI-C言語に関することです。
ベンダー拡張やOS固有機能は除外してください。

よく、書籍でvoid main(void)と書いたサンプルを見かけます。
プログラミング言語Cではint main(void)だし、C言語FAQでも「void main(void)は間違いである」と書いてあるのに…。
過去の質問への回答で「ANSI-Cでは…」と解説している人がいたのでANSI-Cの仕様を調べてもint main(void)の方が正しいように書かれていました。

これだけ資料が揃っているのにいまだにvoid main(void)と書かれた書籍がイッパイあるのはなぜなんでしょう?
最初にvoid main(void)って書いた人がものすごく影響力のある人だったのか?と想像してしまいます。
いったい誰が最初にvoid main(void)と書き始めたのでしょうか?

Aベストアンサー

 昔は『プログラミング言語C』が void main(void) と書いていたからです。

 この本はC言語を開発したDr.KernighanとDr.Ritchieが1978年に発表したものです。
 言語設計者が自ら開発した本として大きな影響力を持ち、「K&R本」と呼ばれて親しまれてきました。

 しかしK&R本の内容では、言語設計として曖昧な部分、不適切な部分もありました。そこで言語設計を洗いなおしたのが1988年のANSI規格です。

 同じころにK&R本もANSI規格に合致するように内容を改定して、『プログラミング言語C 第2版』として再発表されました。

 共立出版から出ている和訳本も、初めは第1版の翻訳でしたが、ANSI以降は第2版の翻訳になっちます。

 しかし我々は、日本語でもそうですが言語習慣というものはなかなか変えられません。だから今でも(コンパイラが許すなら)void main(void)と書く人もいるわけです。

参考URL:http://www.bohyoh.com/CandCPP/C/history.html

 昔は『プログラミング言語C』が void main(void) と書いていたからです。

 この本はC言語を開発したDr.KernighanとDr.Ritchieが1978年に発表したものです。
 言語設計者が自ら開発した本として大きな影響力を持ち、「K&R本」と呼ばれて親しまれてきました。

 しかしK&R本の内容では、言語設計として曖昧な部分、不適切な部分もありました。そこで言語設計を洗いなおしたのが1988年のANSI規格です。

 同じころにK&R本もANSI規格に合致するように内容を改定して、『プログラミング言語C 第2版』と...続きを読む

Q入力フォームで、全角カタカナ(正規表示)以外を入力し送信ボタンを押すとアラートを出すjavascriptが知りたいのですが

htmlで、フォームの項目の中にフリガナを入力してもらう際、全角カタカナ(ア~ン、ァ~ヶ、ゞ等を含む正規表示で)以外の入力を行って送信ボタンを押すと、「フリガナを全角カタカナで正しくご入力下さい」というアラートをjavascriptで出したいのですが、どう判定させたらよいものか、さっぱりわからなくて書き込みさせて頂いています。どなたかご存じの方がいらっしゃったら教えて頂けないでしょうか?
どうか、宜しくお願い致します。

Aベストアンサー

参考URLは半角カタカナですが
ひらがなも指定すればご質問のようなことが可能です。

参考URL:http://www.openspc2.org/reibun/javascript/business/001/index.html

Qvoid*型の配列について

void* a[2];
void* b = a;
void* c[2] = (void *[2])b;

error C2440: '型キャスト' : 'void *' から 'void *[2]' に変換できません。
配列型への変換はありませんが、参照またはポインタから配列への変換があります。

void*型にした a を再度void*型の配列に戻すにはどのように記述すればよいでしょうか?

環境はXP(SP3)のVS2008 MFC です。

宜しくお願いいたします。

Aベストアンサー

void* a[2];
void* b;
void* (*c)[2];

b = (void*)a;
c = (void* (*)[2])b;

ってことですか?

Qフォーム内のテキストフィールドにアドレスを入力後、Enterキーを入力して移動したい

フォーム内のテキストフィールドにアドレスを入力後、Enterキーを入力して
移動するにはどうすればよいのでしょうか?

以下のようなコードを作成したのですがうまくいきませんでした。

<html>
<head>
<script type="text/javascript">
function jumpURL()
{
url = document.f.t.value;
location.href = url;
}
</script>
</head>
<body>
<form name="f" onSubmit="jumpURL()">
<input type="text" name="t" id="t">
</form>
</body>
</html>

ご存知の方がおられましたらご回答をよろしくお願いします。

Aベストアンサー

こんな流れで良いじゃないかな?(動作未確認)
window.onload = function(){
document.getElementById('t').onkeydown = function (ev){
var ev = (!ev) ? event:ev;//Firefox1.5ではevにイベントが入る
var key = ev.keyCode;//取り合えずkeyCodeを取る。
alert(key)//Enterキーを押して確認してください。
var mf = (ev.modifiers) ? ev.modifiers : ((ev.altKey) ? 1 : 0) + ((ev.ctrlKey) ? 2 : 0) + ((ev.shiftKey) ? 4 : 0);//NNがmodifiersでIE,FirefoxがctrlKey、shiftKey、altKeyだったかな?
alert(mf)//Enterキーを押して確認してください。
var k = key + '_' + mf;//ここでkeyCode_modifiersと言う形を作る。
alert(k)//Enterキーを押して確認してください。
if(k == '13_0'){//Enterキーで装飾キーが押されていない。
url = document.f.t.value;
location.href = url;
}
}
}

こんな流れで良いじゃないかな?(動作未確認)
window.onload = function(){
document.getElementById('t').onkeydown = function (ev){
var ev = (!ev) ? event:ev;//Firefox1.5ではevにイベントが入る
var key = ev.keyCode;//取り合えずkeyCodeを取る。
alert(key)//Enterキーを押して確認してください。
var mf = (ev.modifiers) ? ev.modifiers : ((ev.altKey) ? 1 : 0) + ((ev.ctrlKey) ? 2 : 0) + ((ev.shiftKey) ? 4 : 0);//NNがmodifiersでIE,FirefoxがctrlKey、shiftKey、altKeyだったかな?
al...続きを読む

Qc言語 引数のvoidについて

/*sample01.c*/
void f(void);
void f(void){
}

/*sample02.c*/
void f(void);
void f(){
}

sample02.cの方で関数fの引数のvoidを省略できるのはなぜですか?
コンパイラはDev-C++ Version4.9.9.2
OSはWindowsXPです。
よろしくおねがいします。

Aベストアンサー

> sample02.cの方で関数fの引数のvoidを省略できるのはなぜですか?

長いので規格を引用するのはやめますが、二つの関数型が適合するための条件を満たしているからです。JIS X3010:2003 6.7.5.3 関数宣言子(関数原型を含む)を参照してください。p89~p90にかけての記述がこれに該当します。

QBackSpaceしたい

firefox使っています。
フォームのTEXT表示においてclickボタンで
後から1文字ずつ削除したいです。
(キーボードのBackSpace)
できますでしょうか?

Aベストアンサー

できますとも!

(1)クリックするボタンに「onClick=~」を追加する。~の部分には javascriptの関数名。

(2)その関数内には「(いま入っている値がn文字とすると)先頭からn-1文字目までを切り取って、いまある値と置き換えよ」という命令を書く。

これで、バッチリです。

Qint main()、void main()、void main(void)、int main(void)

今日、大学でC言語の講義の時間、先生が、

#include <stdio.h>

void main(void){

}

と宣言してプログラムを書くと教えていました。
main関数には、
main()
void main()
void main( void )
int main()
int main( void )

と、人によりいくつかの描き方があったりします。
どれが本当は正しいのでしょうか?
void mainはすべきではないとなんかの本で読んだのですが・・。

Aベストアンサー

通称C89という以前の言語規格(現行コンパイラの多くが準拠)では、下記のいずれかが正しい。
int main(int argc, char *argv[])
int main(void)

但し、最新のC言語規格(通称C99)では、
<ISO/IEC9899:1999>
or in some other implementation-defined manner.
</ISO/IEC9899:1999>
となっているので、処理系が戻り値のvoidを認めていればvoidも可。
# 組込み系などで戻り値を使わない環境もあるためでしょうか。

なので、コンパイラのマニュアルで戻り値のvoidにしていい/しろと書いてない限り、
voidは言語仕様的には正しくない。(でも動くものもある)

QESCキーを連続で押した時の読み取り

javasctiptにてESCキーを連続して4回押された時にイベントを発生させたいのですが、どのようにすればよいでしょうか。

Aベストアンサー

keyupをチェックしてみてください
こんな感じ?

<script>
try{
document.addEventListener('keyup',function(e){keyupfunc(e)},true);
}catch(e){
document.attachEvent('onkeyup',function(e){keyupfunc(e)});
}
var esc_count=0;
function keyupfunc(e){
if(e.keyCode==27){
if(esc_count>=3){
alert("event!");
esc_count=0;
return true;
}
esc_count++;
}else{
esc_count=0;
}
}
</script>


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報