IE10 - 禁用/启用文本框属性

时间:2014-06-17 22:34:58

标签: jquery asp.net textbox internet-explorer-10

我有文本框,当用户单击其中一个文本框时,将禁用所有其他文本框。它在firefox中工作得很好,我无法理解的是,文本框的启用在IE10中不起作用(我在启用(?)时无法编辑文本框内的值。下面是我的jquery代码,am我错过了IE10的东西?我试过.prop('禁用',false),。prop(' readOnly',false)但IE10中没有任何功能,但在Firefox中我没有问题请帮忙。

Textbox onclick事件:

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

取消按钮onclick事件:

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

2 个答案:

答案 0 :(得分:4)

您应该在禁用或启用文本框时使用.prop('disabled', true|false),而不是attr('disabled', true)removeAttr('disabled')。所以正确的代码是:

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

<强>更新

似乎第一个语句导致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"],因为在大多数浏览器中它会更快。

然后,取消更新:

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

您可能还希望更加一致,如何缩短&#34; textbox&#34;,tbxtxtboxTbox或{{ 1}}都被使用了。只是一个建议虽然:)

答案 1 :(得分:-1)

如果这有任何改变,请告诉我:

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