如何防止在jQuery中提交表单

时间:2013-08-21 10:06:30

标签: jquery ajax wordpress shortcode contact-form-7

我创建了一个生成自定义输入的短代码:

function input_plus_moins() {
    $output = "
            <div data-role='controlgroup' data-type='horizontal' data-mini='true'>
             <button id='plus' data-inline='true'>+</button>
                <input type='text' name='number' id='number' value='0' />
             <button id='minus' data-inline='true'>-</button>
            </div>
        ";
    return $output;
}

然后我可以通过使用jQuery

单击加号或减号按钮来递增或递减输入值
$('#plus').unbind('click').bind('click', function () {
    var value = $('#number').val();
    value++;
    $('#number').val(value);
});

$('#minus').unbind('click').bind('click', function () {
    var value = $('#number').val();
    value--;
    $('#number').val(value);
});

每次点击任何按钮,都会提交表单。

如何修改JavaScript文件,以便仅在专门单击“提交”按钮时提交表单?

3 个答案:

答案 0 :(得分:2)

使用preventDefault();

 $('#plus').click(function (evt) {
        evt.preventDefault();
          var value = $('#number').val();
          value++;
          $('#number').val(value);
           });

      $('#minus').click( function (evt) {
          evt.preventDefault();
             var value = $('#number').val();
             value--;
            $('#number').val(value);
        });

The difference between ‘return false;’ and ‘e.preventDefault();

答案 1 :(得分:2)

button元素的默认类型是“submit”。将按钮类型更改为“按钮”:

function input_plus_moins() {
    $output = "<div data-role='controlgroup' data-type='horizontal' data-mini='true'>" +
        "<button id='plus' type='button' data-inline='true'>+</button>" +
        "<input type='text' name='number' id='number' value='0' />" +
        "<button id='minus' type='button' data-inline='true'>-</button>" +
        "</div>";
    return $output;
}

您还可以使用.on()避免绑定/取消绑定,如下所示:

$(document).on('click', '#plus', function () {
    var value = $('#number').val();
    value++;
    $('#number').val(value);
});

$(document).on('click', '#minus', function () {
    var value = $('#number').val();
    value--;
    $('#number').val(value);
});

或者将它们交替组合到:

$(document).on('click', '#plus,#minus', function (event) {
    var value = $('#number').val();
    if (event.target.id == "plus") value++
    else value--;
    $('#number').val(value);
});

在两种情况下都更好地用$(document)替换它们所附加容器的选择器: $('#mycontainerid').on( ...

答案 2 :(得分:1)

Vadim是正确的,但正确的做法是使用e.preventDefault()

$('button').on("click", function(e) {
    e.preventDefault();
    // Your code
});

还要确保代码中没有任何错误。

享受!