0

すべて、チェックボックスをオンにするための次のPHPがあります。

<input type="checkbox" name="check_out_gear[]" id="'.$resultsetgear['gear_checkout_id'].'" value="'.$resultsetgear['gear_checkout_id'].'" class="gear_checkout_checkbox" checked disabled>

そのコードは正常に機能し、チェックボックスがオンになっていて無効になっています。次のjQueryを使用して、少なくとも1つのチェックボックスがオンになっているかどうかを確認しています。

var fields = jQuery(".gear_checkout_checkbox").serializeArray(); 
if (fields.length == 0) 
{ 
    jQuery.wl_Alert('Please select a piece of equipment that you\'re checking out!','warning','#no_answers','#workform', {sticky:false}); 
    one_selected = false;
}

このチェックボックスをオンにして無効にすると、長さは常に0になります。ただし、コードから無効を削除するとすぐに、長さは少なくとも1になります。無効なチェックボックスでこのコードを機能させる方法はありますか?

4

5 に答える 5

2

serializeArrayフォーム送信を模倣します。フォームが送信されると、無効にされた要素は送信されません。

is(":checked")代わりに使用してください。

jQuery(".gear_checkout_checkbox").is(":checked")

ドキュメントから:

.serializeArray()メソッドは、コントロールを成功させるための標準のW3Cルールを使用して、含める必要のある要素を決定します。特に、要素を無効にすることはできず、name属性が含まれている必要があります。

于 2012-08-06T01:04:35.080 に答える
1

チェックされているかどうかに関係なく、無効になっているチェックボックスは送信されません。したがって、によってピックアップされることはありませんserializeArray。チェックボックスが送信されるかどうかではなく、チェックボックス自体がチェックされているかどうかを確認する必要があります。

于 2012-08-06T01:04:45.650 に答える
1

無効になっている入力は無効になっているため、表示されません。それがチェックされているという事実は重要ではありません。

jQueryを使用してチェックボックスを有効または無効にしている場合は、jQueryを使用して、チェックボックスを無効にするときに非表示の入力に値を設定することもできます(また、チェックボックスを再度有効にしたときに値を再度変更することもできます)。次に、チェックボックスとともに非表示の入力を処理し、正しいことを行うことができます。

もう1つの可能性は、チェックボックスをまったく無効にしないで、CSSの変更を使用してロックされていることを示し、onchangeイベントをキャッチして変更されないようにすることです。

于 2012-08-06T01:04:50.823 に答える
1

これは、無効な入力の動作を文書化したものです。上のjQueryドキュメントから.serializeArray()

.serializeArray()メソッドは、コントロールを成功させるための標準のW3Cルールを使用して、含める必要のある要素を決定します。特に、要素を無効にすることはできず、name属性が含まれている必要があります。

次のように、:checkedセレクター[jQuerydocs]を使用してチェックボックスの長さを確認するだけです。

if (jQuery(".gear_checkout_checkbox:checked").length === 0) 
于 2012-08-06T01:05:30.517 に答える
0

lengthメソッドによって返される配列の長さではなく、jQueryオブジェクトのプロパティを使用できますserializeArray()。次のことを試してください。

if ($(".gear_checkout_checkbox:checked").length === 0) { 
    jQuery.wl_Alert('Please select a piece of equipment that you\'re checking out!','warning','#no_answers','#workform', {sticky:false}); 
    one_selected = false;
}
于 2012-08-06T01:04:13.223 に答える