0

私はjqueryモバイルアプリを持っています。このjqueryボタングループはc#で生成されています

<ul class="ui-grid-d">
    <li class="ui-block-a"><a id="MostrarDetallePedido" class="ui-btn ui-btn-up-a" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="a" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Detalle</span></span></a></li>
    <li class="ui-block-b"><a id="ItemCondiciones" class="ui-state-disabled ui-btn ui-btn-up-b" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="b" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Condiciones</span></span></a></li>
    <li class="ui-block-c"><a id="ItemEliminar" class="ui-state-disabled ui-btn ui-btn-up-c" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="c" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Eliminar</span></span></a></li>
    <li class="ui-block-d"><a id="ItemAdiciones" class="ui-state-disabled ui-btn ui-btn-up-d" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="d" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Adiciones</span></span></a></li>
    <li class="ui-block-e"><a id="ItemComponentes" class="ui-state-disabled ui-btn ui-btn-up-e" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="e" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Componentes</span></span></a></li> 
</ul>

次に、いくつかのボタンを有効または無効にする jquery func があります。

    function (data) {
        $(data).find('error').each(function () {
            if ($(this).text() == 'NoError') {
                $('#ItemEliminar').prop('disabled', false);
                $('#MostrarDetallePedido').prop('disabled', false);
                $('#ItemComponentes').prop('disabled', false);
                $('#ItemAdiciones').prop('disabled', false);
                $('#ItemCondiciones').prop('disabled', false);

                $(data).find('NombreItem').each(function () {
                    $('#NombreItem').text($(this).text());
                })
                $(data).find('OpcionesItem').each(function () {
                    alert($(this).text());
                })

            } else {
                $(data).find('NombreItem').each(function () {
                    $('#NombreItem').text($(this).text());
                })
                $('#ItemEliminar').prop('disabled', true);
                $('#MostrarDetallePedido').prop('disabled', false);
                $('#ItemComponentes').prop('disabled', true);
                $('#ItemAdiciones').prop('disabled', true);
                $('#ItemCondiciones').prop('disabled', true);
            }
        })
    }

この機能はうまく機能しますが、問題は IE でしか機能しないことです。Chrome と Firefox では、jquery ボタンを無効にすることはありません。

4

4 に答える 4

3

<a>には存在しないプロパティを調整する代わりに、ui-disabledクラスをアイテムに追加する必要があります。したがって、代わりに:

$('#ItemEliminar').prop('disabled', true);

使用する$('#ItemEliminar').toggleClass('ui-disabled');

または、より詳細な制御が必要な場合:

$('#ItemEliminar').addClass('ui-disabled');それを無効にするには

$('#ItemEliminar').removeClass('ui-disabled');それを有効にします。

@ s.DanielからのSugessted編集:

また、問題を回避するために、標準的な方法で物事を置き換えるか<error><div class="error"> または行うことを検討する必要があります。<div id="error">

提案ありがとうございますが、私が理解しているように、データはデータを含むある種の配列であり、データを含むDOM要素ではありません。

于 2012-11-19T14:38:03.000 に答える
1

jQuery UI ボタン​​を使用しているため、API のメソッド http://api.jqueryui.com/button/を使用します。

$('#ItemEliminar')
     .button('disable') // disable the button
     .button('refresh'); // refresh it's state
于 2012-11-19T14:49:09.993 に答える
0

wirey のアプローチは、問題の一部を解決しますが、ボタンの無効化オプションを初期化する必要があることを示すメッセージをスローします。

ワイヤーコードの変更は私にとってはうまくいきます。

$('#ItemEliminar')
   .button({ disabled: false }) //Here initializes disable option
   .button('disable')           // Disable the button
   .button('refresh');          // Refresh
于 2012-11-19T20:09:12.677 に答える
0

おそらくcssを使用する必要があります:

しばらく前にこれを入手しました:

a[disabled="disabled"] { 
set your opacity, etc here
}
于 2012-11-19T14:35:34.517 に答える