フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード
フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません。ただし、場合によってはこの値を送信する必要があります。
disabled の代わりに readonly を使用するなど、多くの解決策がありますが、どれもあまり良くないと思います (具体的な理由は省略します)。

解決策として、送信するフォームを送信する前にコピーし、コピーしたフォーム内のすべてのフォーム フィールドの disabled 属性を false に設定して、コピーしたフォームを送信するという方法を考えました。以下はデモ コードです (デモ効果を確認するには、コードを submit.html というファイルに保存します)。

コードをコピー
コードは次のとおりです。

<html>
<ヘッド>
<meta http-equiv="コンテンツタイプ" content="text/html; charset=shift-jis">
<タイトル>
フォームを送信
</タイトル>
<スクリプト>
関数doSubmit(フォーム) {
var newForm = form.cloneNode(true);
フィールドを有効にします(newForm.getElementsByTagName("input"));
フィールドを有効にします(newForm.getElementsByTagName("textarea"));
フィールドを有効にします(newForm.getElementsByTagName("select"));
newForm.style.display = "なし";
document.body.appendChild(新しいフォーム)
新しいフォームを送信します。
}
関数enableFields(フィールド) {
for(var i=0;i<fields.length;i++) {
var フィールド = fields[i];
if (フィールドインスタンス(配列)) {
(var j=0;j<field.length;j++) の場合 {
フィールド[j].disabled = false;
}
} それ以外 {
フィールドが無効 = false;
}
}
}
</スクリプト>
</head>
<本文>
<フォームアクション="submit.html">
<input type="text" name="text" value="tt" 無効/>

<input type="radio" name="radio" value="r1" チェック済み 無効>r1
<input type="radio" name="radio" value="r2">r2

<input type="チェックボックス" name="チェックボックス" value="c1">c1
<input type="checkbox" name="checkbox" value="c2" チェック済み無効>c2

<select name="select" 無効>
<オプション値="1">1</オプション>
<オプション値="2">2</オプション>
</選択>

<textarea name="textarea" 無効>123</textarea>

<input type="button" value="送信" onclick="doSubmit(this.form)">
</フォーム>
</本文>

<<:  CSS3はグラフィックの落下アニメーション効果を実現します

>>:  MySQL データ分析ストレージエンジンの例の説明

推薦する

node.js でマルチコア CPU を最大限に活用する方法

目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...

Dockerを使用してMySQLデータベースをインストールするDeepinの詳細な説明

まずMySQLソースをクエリするdocker 検索 mysql公式ウェブサイトにアクセスしてイメージ...

MYSQLデータベースの最適化段階を簡単に理解する

導入面接官がこんな質問をしたことはありませんか?データベースをどのように最適化しますか?では、この質...

HTMLハイパーリンクaタグのhrefジャンプとonclick間の実行順序の例

HTMLハイパーリンクaタグのhrefジャンプとonclickの実行関係htmlのaタグのhrefは...

CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。

次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側の...

Ubuntu 18.04 Server に静的 IP を設定する方法

1. 背景Netplan は、Ubuntu システムのネットワーク設定を簡単に管理および構成できるよ...

Vuex データの永続性を実装するためのアイデアとコード

vuexとはvuex: vue.js専用に開発された状態管理ツールで、すべてのコンポーネントの状態を...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...

MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...

MySQL の自動増分 ID (主キー) が不足した場合の解決策

MySQL で使用される自動インクリメント ID には多くの種類があり、各自動インクリメント ID ...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...

Vueはプライベートフィルターと基本的な使用法を定義します

プライベート フィルターとグローバル フィルターのメソッドと概念は同じですが、プライベート フィルタ...

MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明

背景mysql.slow_log からスロー クエリ ログを取得するのは遅く、テーブルは csv テ...

MySQLの自動増分主キーIDはこのように処理されません

MySQLの自動増分主キーIDは段階的に増加しません1. はじめにMySQL データベースにデータを...