【问题标题】:Stopping select.change from posting back停止 select.change 回发
【发布时间】:2010-08-10 19:23:42
【问题描述】:

这个问题是更大页面的一部分,但我已经简化了代码以提供一个简单的示例来说明我正在谈论的内容。基本上我有一个带有 AutoPostBack="true" 的 ASP 下拉列表,我想做一些 JavaScript 客户端,如果需要可以停止回发。但是,我无法让它停止回发。

<script type="text/javascript">
$(document).ready(function()
{
    $("#ddl").bind('change', function() {
        return false;
    });
});
</script>

<select id="ddl" onchange="form.submit()">
    <option value="">Item 1</option>
    <option value="">Item 2</option>
    <option value="">Item 3</option>
    <option value="">Item 4</option>
    <option value="">Item 5</option>
</select>

【问题讨论】:

    标签: javascript asp.net jquery postback


    【解决方案1】:

    这是我的解决方法(Firefox 有效,IE 7/8 有效):

    $(function() {
        var $select = $('#ddl'), tmp = $select.attr('onchange');
    
        $select.attr('onchange', '');
    
        $select.change(function() {
            // If you want to postback:
            tmp();
        });
    });
    

    Simple 删除 HTML 处理程序并将其放入变量中。然后您可以注册您的更改功能,如果您想调用自动回发功能,您可以。

    【讨论】:

    • 其他人提交了类似的东西,但我同意了。谢谢!
    【解决方案2】:
    $("#ddl").change(function(e) {
        e.preventDefault();
    });
    

    【讨论】:

    • 执行e.preventDefault() 实际上不会比return false; 阻止表单提交更多。
    【解决方案3】:

    试试这个:

    $(document).ready(function() {
      $('#ddl').attr('onchange', '').change(function() {
        if (0 !== +$(this).attr('selectedIndex')) {
          this.form.submit();
        }
        return false;
      });
    });
    

    【讨论】:

    • 是的,这将覆盖标签中嵌入的 form.submit,但我需要捕获 onChange 事件,然后如果不满足某些条件,则不要让页面继续进行 PostBack。
    • @rpf3:啊,抱歉我错过了。更新后的 sn-p 是否更接近您要查找的内容?
    • 就是,谢谢,不过我在patrick dw的回答上贴了更详细的问题说明
    • 嘿...新的尝试。如果 select 有一个空值,它将阻止 submit(),否则它会通过。编辑:再次更新以明确检查 selectedIndex,而不是值。
    【解决方案4】:
    $("#ddl").change(function() {
        // Do some javascript
        return false;
    });
    

    此外,如果您将 onChange 属性从 select 元素中移除,这可能会有所帮助

    【讨论】:

    • 您的代码示例实际上与问题中的代码相同。
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2012-12-21
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2018-02-21
    相关资源
    最近更新 更多