質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

1回答

198閲覧

JavaScript 確認ダイアログでキャンセルを選択時(return)にフォームの値を元の値に戻したい

Take_it

総合スコア357

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2024/01/21 02:01

1ページに1500個程度の入力フォームがあります(50商品×30日分想定)
PHP+Smartyで構築しています。

HTML

1<form method="POST" onSubmit="return check()"> 2<input type="hidden" name="code" value="{$code}"> 3<input type="hidden" name="date" value="{$date}"> 4<input type="number" step=1 name="在庫" value="{$在庫[$date][$code]}"> 5</form>

JavaScript

1function check(){ 2 if(window.confirm('更新してよろしいですか?')){ // 確認ダイアログを表示 3 return true; // 「OK」時は送信を実行 4 } 5 else{ // 「キャンセル」時の処理 6 window.alert('キャンセルされました'); // 警告ダイアログを表示 7 8 return false; // 送信を中止 9 } 10}

送信ボタンは配置せず、フォームの値を書き換えてEnter押下で更新する想定です。
JavaScriptにて確認ダイアログを表示し、「キャンセル」を選択した際、
「キャンセルされました」と表示され、「OK」を押下すると元の画面に戻りますが、
フォームの値はEnter押下直前の書き換えた数値になってしまいます。
これを、入力を弄る前の元の値( $在庫[$date][$code] )に戻す方法はないでしょうか?

画面内だけで完結する方法がなければ、returnの場合に別のPOSTをして画面を再取得でも構いません。
(できれば画面内で完結させたいですが)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTML

1<form method="POST" onSubmit="return check(this,{$在庫[$date][$code]})"> 2<input type="hidden" name="code" value="{$code}"> 3<input type="hidden" name="date" value="{$date}"> 4<input type="number" step=1 name="在庫" value="{$在庫[$date][$code]}"> 5</form>

フォームが複数あるので、
■どのフォームからcheckが呼び出されたか
■元の値が何であったのか
を引数で渡します。

JavaScript

1function check(form,origin_value){ 2 if(window.confirm('在庫を更新してよろしいですか?')){ // 確認ダイアログを表示 3 return true; // 「OK」時は送信を実行 4 } 5 else{ // 「キャンセル」時の処理 6 window.alert('キャンセルされました'); // 警告ダイアログを表示 7 form.elements['在庫'].value = origin_value; 8 return false; // 送信を中止 9 } 10}

キャンセル時、return直前に、在庫の値を受け取った引数を元に書き換えます。

投稿2024/01/21 02:09

F_I_A

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Take_it

2024/01/21 13:13

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問