フォーム内の複数ボタンによる送信先制御手法

フォーム内の複数送信先処理

単一フォームで異なるアクション先を指定する必要がある場合、JavaScriptを使用した実装方法が有効です。以下に具体的な実装例を示します。

基本実装パターン

<form id="multiActionForm" method="post">
  <!-- フォーム要素 -->
  <input type="button" value="登録" onclick="setAction('register')">
  <input type="button" value="削除" onclick="setAction('remove')">
</form>

<script>
function setAction(operationType) {
  const form = document.getElementById('multiActionForm');
  
  switch(operationType) {
    case 'register':
      form.action = '/registration-endpoint';
      break;
    case 'remove':
      form.action = '/deletion-endpoint';
      break;
  }
  form.submit();
}
</script>

隠しフィールドを用いた高度な制御

<form id="dataQueryForm" method="post" onsubmit="return validateInputs()">
  <input type="hidden" id="queryMethod" name="queryMethod">
  
  <!-- 入力フィールド -->
  <input type="text" id="itemName" name="itemName" required>
  
  <!-- 操作ボタン -->
  <button type="button" onclick="prepareSubmission('cache')">キャッシュ検索</button>
  <button type="button" onclick="prepareSubmission('database')">DB直接検索</button>
</form>

<script>
function validateInputs() {
  const itemValue = document.getElementById('itemName').value.trim();
  return itemValue !== '';
}

function prepareSubmission(method) {
  document.getElementById('queryMethod').value = method;
  if(validateInputs()) {
    document.getElementById('dataQueryForm').submit();
  }
}
</script>

タグ: javascript HTML form Web開発 フォーム検証

8月3日 08:45 投稿