2014-06-17 46 views
1

我有文本框,當用戶單擊其中一個文本框時,所有其他文本框將被禁用。它在Firefox中工作正常,我無法理解的是,啓用文本框在IE10中不起作用(我無法在啓用(?)時編輯文本框內的值。下面是我的jQuery代碼,我是否缺少IE10的東西?我已經嘗試過.prop('禁用',假),.prop('只讀',假),但在IE10中沒有任何作品,但在Firefox中我沒有問題請幫忙。IE10 - 禁用/啓用文本框屬性

function DisableTboxExceptActiveTxbox(txtbox) { 
    $('input[id*="tbxQty"]').attr("disabled", true); 
    $(txtbox).removeAttr("disabled"); 
} 

取消按鈕onclick事件:

function CancelUpdate(btn) { 
    $('input[id*="tbxOrderQty_"]').removeAttr('disabled'); 
} 

回答

3

您應該使用.prop('disabled', true|false)禁用或啓用文本框時,而不是attr('disabled', true)removeAttr('disabled')。所以,正確的代碼是:

function DisableTboxExceptActiveTxbox(txtbox) { 
    $('input[id*="tbxQty"]').prop("disabled", true); 
    $(txtbox).prop("disabled", false); 
} 

UPDATE:

看來,第一條語句導致IE 10和11,使當前的文本框被禁用,儘管第二行移除disabled財產,當您開始與文本框交互時,IE會重新添加它。當您在運行代碼時查看DOM Explorer時可以看到這一點。

試試這個代碼,而不是:

function DisableTboxExceptActiveTxbox(txtbox) { 
    $('input[id*="tbxQty"]').not(txtbox).prop("disabled", true); 
} 

另見本琴:http://jsfiddle.net/pX6Kv/2/

這將選擇所有的文本框,然後過濾掉電流文本框,然後將剩餘的爲禁用。有趣的bug。如果它還沒有,我會和微軟一起提交。


你應該考慮增加一個類來這些文本框,而不是使用[id*="tbxQty"],因爲這將是在大多數瀏覽器速度更快。

然後,CancelUpdate:

function CancelUpdate(btn) { 
    $('input[id*="tbxOrderQty_"]').prop('disabled', false); 
} 

您可能還需要更加一致的,你要如何縮寫「文本框」,爲tbxtxtboxTboxTxbox都使用。只是一個建議,但:)

+0

我已經嘗試過這些,但他們也不會工作在IE10。它可以在Firefox中使用,但不能在IE10中使用。 – sd4ksb

+0

下面是這種事情的工作版本:http://jsfiddle.net/pX6Kv/你可以確認它是否適用於IE10?如果是這樣,這可能是您的處理程序如何綁定到文本框本身的問題。 –

+0

這絕對是IE10。你的jsfiddle在那裏也不起作用。 – sd4ksb

-1

讓我知道這改變任何東西:

function DisableTboxExceptActiveTxbox(txtbox) {  
    $("input[type=text]").click(function (e) { 
    $("input[type=text]").attr("disabled", true); 
    $(this).removeAttr("disabled"); 
    } 
} 
+0

這不起作用。 – sd4ksb

+0

嗯,你點擊後可以粘貼html代碼嗎?只是爲了看看這個標記是如何的... – user3743250