Остановка select.change от отправки назад - PullRequest
3 голосов
/ 10 августа 2010

эта проблема является частью большой страницы, но я упростил код, чтобы дать простой пример того, о чем я говорю.В основном у меня есть выпадающий список ASP с AutoPostBack = "true", и я хочу сделать некоторые стороны клиента 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>

Ответы [ 4 ]

1 голос
/ 10 августа 2010

Это мой обходной путь (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 и помещает его в переменную.Затем вы можете зарегистрировать свою функцию изменения, и если вы хотите вызвать функцию автоматической обратной передачи, вы можете.

0 голосов
/ 10 августа 2010
$("#ddl").change(function() {
    // Do some javascript
    return false;
});

Также может помочь, если вы уберете атрибут onChange из элемента select

0 голосов
/ 10 августа 2010
$("#ddl").change(function(e) {
    e.preventDefault();
});
0 голосов
/ 10 августа 2010

Попробуйте это:

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