.change()在IE中不能用于<select>标签</select>

时间:2010-08-10 17:15:49

标签: javascript jquery html internet-explorer

我的网站中有这样的组合框,我希望它在用户更改后立即加载一些内容。这是一个简单的国家/地区的每个州,请查看:http://jsfiddle.net/tzvyX/

碰巧在IE中,.change()方法不起作用,我不知道如何解决它。也许是其他一些事件听众?

3 个答案:

答案 0 :(得分:1)

编辑:这也来自同一个src:

  

BMan :要让change()在IE中运行,解决方法是:   $(element).change(function() { doChange(); }).attr("onchange", function() { doChange();});   请记住,doChange()函数不应该使用$(this)。

很难说没有一些示例代码会出现什么问题,但这是来自jquery网站的一个例子,它在IE中运行。 src:http://api.jquery.com/change/

<html>
<head>
  <style>

  div { color:red; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
    <select name="sweets" multiple="multiple">
    <option>Chocolate</option>
    <option selected="selected">Candy</option>

    <option>Taffy</option>
    <option selected="selected">Caramel</option>
    <option>Fudge</option>
    <option>Cookie</option>

  </select>
  <div></div>
<script>
    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("div").text(str);
        })
        .change();
</script>

</body>
</html>

答案 1 :(得分:0)

是的,这是一个已知问题。您必须注意click事件并手动检查该值是否与之前的值不同。

答案 2 :(得分:0)

嗯我在IE中遇到了更改问题,但只有单选按钮和onchange。以下是我在IE中使用的一些代码。

$('#NaviDDL').change(function() {
    var id = $('#NaviDDL option:selected').val();
    if (id == 'default') return true;
    location.href=id;
});

我认为诀窍是避免在IE中使用$(this)这个实例。请尝试以下方法:

$('#sctEstado').live('change', function() {
        $('.small-loading').show();
        $('.conteudo').load('onde_encontrar.representante.php?id='+$("#sctEstado option:selected").val());
    });​