5

住所フォームがあり、国が米国の場合は州の選択ボックスを用意し、外国の場合はテキストボックスに変更して、州/州を入力できるようにしたいと考えています。

私は PHP でコードを生成し (状態選択や国選択など)、選択とテキスト ボックスの両方を出力し、最初はテキスト ボックスを非表示にして無効にすることを考えていました。選択を無効にします。

私の質問は、フォームが送信されたときにそれらの1つが無効になると仮定して、両方の入力が同じ名前である場合、それは有効ですか?

おまけの質問として、これを行うより良い方法はありますか?

4

2 に答える 2

6

はい、可能です。無効な入力はリクエストで送信されず、有効でセマンティックな HTML が生成されるため、これが最善の方法です。

w3に示すように:

disabled 属性を設定すると、要素に対して次のような効果があります。

  • 無効なコントロールはフォーカスを受け取りません。
  • 無効なコントロールは、タブ ナビゲーションでスキップされます。
  • 無効化されたコントロールは成功しません。

[...]

この例では、INPUT 要素が無効になっています。したがって、ユーザー入力を受け取ることも、その値をフォームとともに送信することもできません。

于 2013-09-03T02:09:14.983 に答える
1

jQuery を使用すると仮定すると、次のようなことができます。

HTML:

<select id="countries">
  <option>Countries</option>
</select>

<select id="states" style="display: none"> <!-- States in US -->
  <option>States</option>
</select>

<textarea id="address" style="display: none">
</textarea>

JS:

// Cache states list and address box beforehand so we don't have to query every time.
var $states = $("#states"),
    $address = $("#address");

$("#countries").change(function () { // Bind to change event for checking if US selected

  var isUnitedStates = $(this).val() == "United States";

  if (isUnitedStates) { // US is selected, show States
    $states.attr("id", "address").show()
    $address.attr("id", "_address").hide()
  } else {  // US is not selected, show Address box
    $states.attr("id", "_address").hide()
    $address.attr("id", "address").show()
  }
})

これはあまり便利ではありませんが、本当に確認したい場合は、これがオプションです。

于 2013-09-03T02:17:12.727 に答える