Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript event.preventDefault不工作_Javascript_Jquery_Ajax_Events_Preventdefault - Fatal编程技术网

Javascript event.preventDefault不工作

Javascript event.preventDefault不工作,javascript,jquery,ajax,events,preventdefault,Javascript,Jquery,Ajax,Events,Preventdefault,我这里有一个简单的代码,没有什么太高级的 $("input#send").submit(function(event){ event.preventDefault(); $.ajax({ type: 'POST', url: add.php, data: data, success: success, dataType: dataType }); }); 当我点击“发送”按钮时,

我这里有一个简单的代码,没有什么太高级的

    $("input#send").submit(function(event){
      event.preventDefault();
    $.ajax({
        type: 'POST',
        url: add.php,
        data: data,
        success: success,
        dataType: dataType
    });
});
当我点击“发送”按钮时,
event.preventDefault
功能不工作,页面加载


知道为什么吗?

尝试使用return false

$("input#send").submit(function(event) {
    $.ajax({
        type: 'POST',
        url: add.php,
        data: data,
        success: success,
        dataType: dataType
    });
    return false;
});
表单具有提交事件,而不是按钮。另外,ID应该是唯一的,因此
标记#ID
只能是
#ID

$("#theform").submit(function(event) {
    event.preventDefault();
    // ...
});

我相信提交事件是针对表单元素的。对于输入[type='button']您可能需要使用click事件。

您需要绑定到表单的
submit
事件或按钮的
click
事件,并调用
event.preventDefault()
如果要停止表单提交:

$('form').bind('submit', function (event) {
    event.preventDefault();
});

$('form').find(':submit').bind('click', function (event) {
    event.preventDefault();
});
  • 'Add.php'
  • 将第一行中的选择器更改为包含
    input#send
    的表单的
    id
    属性 处理表单上的
    submit()
    处理程序而不是输入上的
    click
    处理程序的优点是,某些表单可以通过按enter键提交(当用户关注其中一个表单字段时)。如果没有
    id
    属性,请添加一个或使用不同的jQuery选择器以表单标记为目标

    $("#myform").submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: 'add.php',
            data: data,
            success: success,
            dataType: dataType
        });
        return false;
    });
    

    如果您使用的是preventDefault,我假定这意味着您不希望使用默认提交操作。我会使用不同的事件,而不是使用.submit。对我来说,您想要拦截的不是提交操作,而是通常会导致提交的单击

    $('#inputSend').on('click', function(event) {
      event.preventDefault();
      //the rest
    });
    

    如果
    返回false
    event.stopPropagation()
    都不起作用,请尝试以下方法。使用
    .on()
    将使提交功能可访问。将
    .submit()
    更改为
    .on(“submit”)
    后,您可以使用
    返回false
    e.stopPropagation()


    不应该有区别。
    在jQuery事件处理程序中返回false
    与调用
    event.preventDefault()相同;event.stopPropagation()我已经尝试过了,但由于ajax的原因,它没有工作。如果我把它放在ajax代码之上,但不是放在它之后,它就会工作。不管怎样谢谢:)谢谢,成功了。请允许我问一下,我之前使用了按钮上的单击功能,但它似乎也没有这样工作?为什么?彼得·斯图尔特:你到底是什么意思?在
    submit
    按钮上点击
    ,同样有效:。@PeterStuart我想这是因为你没有在
    add.php
    周围加引号,请看下面我的答案。我同意@pimvdb关于将事件处理程序放在表单本身上的建议,因为您还可以通过键盘使用
    enter
    键调用表单提交。
    $(document).on("submit", "input#send", function(event) {
        event.stopPropagation();
        $.ajax({
            type: 'POST',
            url: add.php,
            data: data,
            success: success,
            dataType: dataType
        });
        return false; });