15 に答える
フィールドを無効にしてから、フォームが送信される前に有効にします。
jQuery コード:
jQuery(function ($) {
$('form').bind('submit', function () {
$(this).find(':input').prop('disabled', false);
});
});
<select disabled="disabled">
....
</select>
<input type="hidden" name="select_name" value="selected value" />
select_name
通常、 に付ける名前はどこにありますか<select>
。
別のオプション。
<select name="myselect" disabled="disabled">
<option value="myselectedvalue" selected="selected">My Value</option>
....
</select>
<input type="hidden" name="myselect" value="myselectedvalue" />
hidden
これで、使用しているWebサーバーによっては、入力を.の前または後に配置する必要があることに気付きました<select>
.
私の記憶が正しければ、IIS では前に置き、Apache では後に置きます。いつものように、テストが重要です。
私はこれに対する解決策を探していました、そして私はこのスレッドで解決策を見つけられなかったので私は自分自身をしました。
// With jQuery
$('#selectbox').focus(function(e) {
$(this).blur();
});
単純です。フィールドに焦点を合わせると、フィールドをぼかすだけで、フィールドを無効にするようなものですが、実際にはそのデータを送信します。
以前の選択ボックスに基づいて選択した値をユーザーが変更できないようにしたいという、少し異なるシナリオに直面しました。私がやったことは、選択ボックスで選択されていない他のすべてのオプションを無効にすることでした
$('#toSelect').find(':not(:selected)').prop('disabled',true);
選択フィールドの :input セレクターでは機能しません。これを使用してください。
jQuery(function() {
jQuery('form').bind('submit', function() {
jQuery(this).find(':disabled').removeAttr('disabled');
});
});
私が見つけた最も簡単な方法は、フォームに関連付けられた小さなjavascript関数を作成することでした:
function enablePath() {
document.getElementById('select_name').disabled= "";
}
そしてあなたはここであなたの形でそれを呼びます:
<form action="act.php" method="POST" name="form_name" onSubmit="enablePath();">
または、フォームをチェックするために使用する関数で呼び出すことができます:)
jQueryを使用せずにTresが提案した同じソリューション
<form onsubmit="document.getElementById('mysel').disabled = false;" action="..." method="GET">
<select id="mysel" disabled="disabled">....</select>
<input name="submit" id="submit" type="submit" value="SEND FORM">
</form>
これは誰かの理解を深めるのに役立つかもしれませんが、明らかに jQuery よりも柔軟性が低くなります。
次のコードを使用して、選択のオプションを無効にします
<select class="sel big" id="form_code" name="code" readonly="readonly">
<option value="user_played_game" selected="true">1 Game</option>
<option value="coins" disabled="">2 Object</option>
<option value="event" disabled="">3 Object</option>
<option value="level" disabled="">4 Object</option>
<option value="game" disabled="">5 Object</option>
</select>
// Disable selection for options
$('select option:not(:selected)').each(function(){
$(this).attr('disabled', 'disabled');
});
送信する前に一行追加するだけです。
$("#XYZ").removeAttr("無効");
または、JavaScript を使用して選択の名前を変更し、無効に設定します。このようにして、選択は引き続き送信されますが、チェックしていない名前を使用しています。
入力が無効になっているときにデータフィールドに値を保存する、クイック(Jqueryのみ)プラグインを作成しました。これは、.prop() または .attr()... を使用して jquery を介してプログラムでフィールドが無効にされている限り、.val()、.serialize()、または .serializeArra() によって値にアクセスすると、常に無効になっていても値:)
恥知らずなプラグイン: https://github.com/Jezternz/jq-disabled-inputs
実行可能な解決策を見つけました。選択した要素以外のすべての要素を削除します。次に、スタイルを無効に見えるものに変更することもできます。jQuery の使用:
jQuery(function($) {
$('form').submit(function(){
$('select option:not(:selected)', this).remove();
});
});