如何防止AJAX事件的空触发器?

时间:2012-06-05 20:14:50

标签: jquery ajax onchange

使用以下jQuery代码,我创建了一个更新页面的下拉列表,但我相信当它使用返回的结果更改#content时,它会将其计为change事件并拉出{ {1}}信息。

#sidebar

<script> var get_pages_load_options = { target: '#content', data: {ajaxtype: 'content'}, beforeSubmit: function() { console.debug('beforeSubmit'); }, success: function() { console.debug('successful'); } }; $("#content").on('change','.get_pages',function(){ var submit_page = $(this).attr('rel'); var form_url = $("#"+submit_page).attr('action'); console.debug(submit_page+" & "+form_url); $("#"+submit_page).ajaxForm(get_pages_load_options); $.ajax({ type: "POST", url: form_url, data: {ajaxtype: "side"}, success: function(data) { console.debug(data); $("#sidebar_menu").html(data); } }); }); </script>

的HTML如下所示
#content

你知道如何阻止第二次改变。谢谢!

编辑:我确实有一个默认的常规版本,上面应该覆盖以下功能:

<div id="content" class="content">
    <h1>Game Updates</h1>
    <form action="/gameplay/updates/" id="submit_page" name="submit_page" class="get_pages" method="post">
        <select name="year" class="get_pages" rel="submit_page">
            <option value="2012">2012 -- v1.7.0 - v2.0.0</option>
            <option value="2011">2011 -- v1.5.3 - v1.6.0</option>
            <option value="2010">2010 -- v1.3.3 - v1.5.2</option>
            <option value="2009">2009 -- v1.1.4 - v1.3.2</option>
            <option value="2008">2008 -- v0.6.0 - v1.1.3</option>
            <option value="2007">2007 -- v0.1.x - v0.5.5</option>
        </select>
    </form>
    /** Update Logs **/
    <br/><br/>
    <p>
        -----------<br />
        Thank you,<br />
        Admin deth4uall
    </p>
</div>

1 个答案:

答案 0 :(得分:1)

如果值未定义,只需退出函数。

$("#content").on('change','.get_pages',function(){
    var submit_page = $(this).attr('rel');
    var form_url = $("#"+submit_page).attr('action');
    if (!submit_page || !form_url) {
        return;
    }
    //console.debug(submit_page+" & "+form_url);
    $("#"+submit_page).ajaxForm(get_pages_load_options);
    $.ajax({
        type: "POST",
        url: form_url,
        data: {ajaxtype: "side"},
        success: function(data) {
            //console.debug(data);
            $("#sidebar_menu").html(data);
        }
    });
});