防止Ajax创建表单的默认值

时间:2011-07-05 22:39:00

标签: php jquery ajax live form-submit

我从名为test.php的文件中点击该表单,其中包含以下内容:

<form method="post" class="adminTM">
    <input type="hidden" name="execID" value="<?=$_POST['exec']?>" />
    <input type="hidden" name="fromTM" value="<?=$_POST['TM']?>" />
    <input type="text" name="toTM" value="<?=$_POST['TM']?>" />
    <input type="hidden" name="symbol" value="<?=$_POST['symbol']?>" />
    <button class="submitTM">SUBMIT</button>
</form>

javascript看起来像这样:

$(function(){

    $('.adminTMClick').live('click', function(e){
        $(this).data('TM', this.innerHTML);
        $.post('test.php', $(this).data(), function(data){
            $(data).dialog({
                modal: true,
                beforeClose: function(){
                    $(this).remove();
                }
            });
            console.log($('.adminTM'));
            console.log($('.submitTM'));
        });
    });

    $('.submitTM').live('click', function(e){ 
        //originally had .adminTM with submit which failed
        e.preventdefault();
        alert('i am here');
        return false;
    });

});

如何在单击提交按钮时使表单执行默认提交操作?

这是一个小提琴,基本上演示了我在做什么(由于jsfiddle的工作方式我不得不改变它):http://jsfiddle.net/maniator/tQVnV/show/

1 个答案:

答案 0 :(得分:0)

您应该在表单上使用submit()事件而不是提交时的click(),因为按Enter键仍然会提交表单(绕过提交按钮)。

这应该可以正确地防止表单执行默认提交:

$('.adminTM').live('submit', function(e) {
    // execute custom code
    console.log("submit event fired");

    // prevent default submit
    return false;
});

jsFiddle:http://jsfiddle.net/bjorn/tQVnV/11/