0

我有以下代码:-

//-- function to enable editing of content if disabled for new records --\\
function edit(e,elems)
{
  if ( e.value == "new" )
  {
    $(e).parent().parent().find(":input[readonly]").each(function(index) {
      $(this).prop('readonly',false);
      $(this).addClass('highlight');
    });
      $(e).parent().parent().find("select[disabled]").each(function(index) {
      $(this).prop('disabled',false);
      $(this).addClass('highlight');
//-- Insert dynamic options --\\
      if ($(this).attr('name') == 'low')
      {
        var optVal = "option[value='" + $(this).val() + "']";
        var optclone = $("#affoptions").clone();
        $(optclone).find(optVal).attr("selected",true);
        $(this).html($(optclone).find("option"));
      }
      if ($(this).attr('name') == 'high')
      {
        var optVal = "option[value='" + $(this).val() + "']";
        optclone = $("#insoptions").clone();
        $(optclone).find(optVal).attr("selected",true);
        $(this).html($(optclone).find("option"));
      }
    });
    $(e).parent().parent().find(elems).focus();
  } else {
      $(e).parent().parent().find(elems).each(function(index) {
      if ( $(this).is('select') )
      {
        $(this).prop('disabled',true);
      } else {
        $(this).prop('readonly',true);
      }
      $(this).removeClass('highlight');
    });
  }
}

这在谷歌浏览器中工作得很好,但在 IE 8 中不起作用。基本上我有一个带有单选按钮的表单,其中一个用于新条目。这基本上启用了输入文本字段并删除了选择字段的禁用标志。禁用时,选择选项中只有 1 个值。单选按钮插入隐藏 div 中的所有可用选项,并在新选项中标记所选索引值以匹配初始加载中的单个条目。

在 IE 中,选择选项被完全清除,甚至最初的条目都没有留下。

我无法让它正常工作,并认为这是克隆元素的问题。

我究竟做错了什么?

谢谢克雷格

4

1 回答 1

0

没关系,我最终想通了。我的代码很好,问题是 IE 不喜欢我正在克隆的带有选项的隐藏 DIV 缺少 SELECT 标记。去搞清楚。

所以改变这个: -

<div id="affoptions" class="options">
  <option value="0001">0001 | A</option>
  <option value="0002">0002 | B</option>
  <option value="*">* | All</option>
  <option value="0003">0003 | C</option>
  <option value="0004">0004 | D</option>
</div>

对此:-

<div id="affoptions" class="options">
 <select>
  <option value="0001">0001 | A</option>
  <option value="0002">0002 | B</option>
  <option value="*">* | All</option>
  <option value="0003">0003 | C</option>
  <option value="0004">0004 | D</option>
 </select>
</div>

解决了。

干杯克雷格

于 2012-09-29T23:17:17.760 回答