2012-11-19 62 views
0

我有一個jquery移動應用,與C#生成此jquery的按鈕組jquery的禁用按鈕只能IE

<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上運行。 Crhrome和Firefox從未禁用de jquery按鈕。

+2

只有表單元素具有'disabled'屬性。請注意,'.find('error')'什麼也找不到,如果'error'是一個類名,它應該是'find('。error')'。 – undefined

+0

真的,我沒有表單,只是一組與一些圖像交互的按鈕。那些按鈕真的是** a **標籤。 –

+0

它們實際上不是按鈕,它們是錨鏈接,你不能禁用它們。 – undefined

回答

1

的DOM元素,使用API​​的方法http://api.jqueryui.com/button/

$('#ItemEliminar') 
    .button('disable') // disable the button 
    .button('refresh'); // refresh it's state 
0

你可能不得不使用CSS:

我得到這個位置而回:

a[disabled="disabled"] { 
set your opacity, etc here 
} 
3

代替調整屬性,它不適合<一個>存在的,你應該將ui-disabled類添加到該項目。 因此,而不是:

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

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

,或者如果你想要更多的控制:

$('#ItemEliminar').addClass('ui-disabled');禁用它

$('#ItemEliminar').removeClass('ui-disabled');來啓用它。從@ s.Daniel

Sugessted編輯:

你也應該考慮<div class="error"><div id="error">更換<error>做事避免 問題的標準方式。

謝謝你的建議,但據我瞭解的數據是某種類型的數據數組到它,而不是因爲你是使用jQuery UI按鈕包含數據

+0

這很好,四你的幫助。 –

+0

只有一件事,它爲什麼會收到點擊並導航到propper錨?即使它已經禁用了? –

+0

你是說這個按鈕實際上在工作嗎? –

0

wirey的形式給出瞭解決問題的一部分,但它拋出一個消息,說明該按鈕禁用選項必須初始化。

修改有線代碼適合我。

$('#ItemEliminar') 
    .button({ disabled: false }) //Here initializes disable option 
    .button('disable')   // Disable the button 
    .button('refresh');   // Refresh