3

いくつかの計算に基づいていくつかの非表示フィールドを有効/無効にしようとしており、jquery prop関数を使用しています。コードは次のとおりです。

function enableSelectedFieldsData(count, mapKey, index) {
    $("#code_" + mapKey + "_" + index).prop("disabled", false);
    $("#description_" + mapKey + "_" + index).prop("disabled", false);
    $("#crossRefrence_" + mapKey + "_" + index).prop("disabled", false);
    $("#image_" + mapKey + "_" + index).prop("disabled", false);
    $("#price_" + mapKey + "_" + index).prop("disabled", false);
    // disable all other fields
    for (var i = 0; i < count; i++) {
        if (i != index) {
            $("#code_" + mapKey + "_" + i).prop("disabled", true);
            $("#description_" + mapKey + "_" + i).prop("disabled", true);
            $("#crossRefrence_" + mapKey + "_" + i).prop("disabled", true);
            $("#image_" + mapKey + "_" + i).prop("disabled", true);
            $("#price_" + mapKey + "_" + i).prop("disabled", true);
        }
    }
}

最初に、すべてのフィールドに disable=true を設定し、選択に基づいて、他のフィールドを無効にしながら選択したフィールドを有効にしようとしています。提出されます。

firebugを使用して確認すると、選択されていないアイテムの無効化フィールド値が次の""ように設定されていることがわかりましたdisable=""

どこで設定が間違っているのかわかりません。この点に関するヘルプやポインタは本当に役に立ちます。

編集

生成した HTML から関連セクションを取り出し、jsfiddleに配置しました。 ご覧ください

4

3 に答える 3

8

prop()を利用できますか?

prop()jQuery 1.6で追加され、次のように使用されます。

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5.x以下を使用している場合はattr()、このFAQにあるように代わりに使用できます-jQueryサイトからフォーム要素を有効/無効にする方法:

// Disable #x
$('#x').attr('disabled', true);

// Enable #x
$('#x').attr('disabled', false);

// -- or --

// Disable #x
$("#x").attr('disabled', 'disabled');

// Enable #x
$("#x").removeAttr('disabled');

jQuery1.6以降を使用していると仮定します

構文は問題ないようです。あなたの問題はおそらく間違ったセレクターだと思います。

セレクターに必要な要素参照が含まれていることを検証するには、次のようにします。

 // output the selector to the console
console.log($("#code_" + mapKey + "_" + index));

ブラウザのデバッグコンソールに要素が表示されている場合は、有効なセレクターを探しています。代わりに[]、セレクターが無効であることがわかります。

または、プロパティを使用して確認し、次のことlengthを警告することもできます。

// alert out the length of the jQuery selector
alert($("#code_" + mapKey + "_" + index).length);

が表示されている場合は0セレクターが無効です。が表示され1ている場合はセレクターが正しいです。

于 2012-09-12T12:16:52.907 に答える
1

HTMLのdisabled属性は (ほとんどの) 他の属性とは少し異なります。その存在だけで要素を無効にするのに十分です。

<input type="text" name="test" disabled>
<input type="text" name="test" disabled="">
<input type="text" name="test" disabled="true">
<input type="text" name="test" disabled="false">

disabled="false"disabled 属性が HTML に存在するため、これらの要素はすべて無効になります (はい、 が付いているものも)。disabled=""呼び出し後に Firebug の HTML タブに表示されている場合

.prop('disabled', true);

それは正しい動作であり、要素無効になっています。無効になっているにもかかわらず、値がまだ送信されている別の理由があります。

于 2012-09-12T12:44:53.080 に答える