表格不断提交使用虚假退货

时间:2015-12-08 12:51:57

标签: javascript jquery

大家好,我是新来的,顺便说一句,我的英语不太好,所以cmiiw

让我们直截了当,所以即使在 function cekIsi 上使用false return,表单也会继续提交,这就是代码

"{Binding whatever, Converter={StaticResource converterName},
 ConverterParameter={StaticResource WeatherEnumValueCold}}"

这是html代码

<script type="text/javascript">
$(document).ready(function() {
    $('input.form-radio').each(function() {
        $(this).attr('disabled', true);
        $('table.webform-grid').css('opacity', 0.6);
        $('table.webform-grid').parent().slideUp();
    })
    $('form.webform-client-form input[type=checkbox]').click(function() {
        refreshGrid($(this), true);
    })
    $('form.webform-client-form input:submit[id=edit-next]').click(function() {
        cekIsi($(this), true);
    })
    $('form.webform-client-form input:submit[id=edit-previous]').click(function() {
        cekIsi($(this), true);
    })
    $('form.webform-client-form input:submit[id=edit-submit]').click(function() {
        cekIsi($(this), true);
    })
});
function cekIsi(cb, init) {
var submitme = true;
$('.webform-grid').each(function(){
    if ($(this).css('opacity') == 1) {
     $(':radio', this).each(function() {
         nam = $(this).attr('name'); 
        if (submitme && !$(':radio[name="'+nam+'"]:checked').length) { 
        submitme = false;
        }
     });
 }
});

if(submitme == false && $('#edit-details-page-num').val() != 1){
    alert("Please stahp here");
    return false;
}
return true;
}
function refreshGrid(cb, init) {
    var xtable = $('table.webform-grid', $(cb).parents('fieldset.webform-component-fieldset'));
    if($(cb).attr('checked')) {
        $('input.form-radio', $(xtable)).each(function() {
            $(this).removeAttr('disabled');
        });
        $(xtable).css('opacity', 1);
        $(xtable).parent().slideDown();
    } else {
        $('tr', $(xtable)).each(function() {
            $('td input.form-radio' ,$(this)).attr('checked', false);
        });
        $('input.form-radio', $(xtable)).each(function() {
            $(this).attr('disabled', true);
        });
        $(xtable).css('opacity', 0.6);
        $(xtable).parent().slideUp();
    }       
}   

所以我恳求你们都给我很好的解释为什么错误的回报不起作用以及我应该如何修复因为我是javascript和jQuery的新手......非常感谢

5 个答案:

答案 0 :(得分:3)

事件处理程序没有返回false,只是它调用的函数返回false ...另外,我建议你使用正确的事件处理而不是依赖return false。

$('form.webform-client-form input:submit[id=edit-submit]').click(function(e) {
    cekIsi($(this), true);
    e.preventDefault();
    return false;
})

使用e.preventDefault();可以防止点击的默认行为,此处它会停止点击提交表单。

答案 1 :(得分:1)

你添加了“return false;”在cekIsi()中。 cekIsi()将返回false。提交是一个事件。您需要使用event.preventDefault();最初,在满足所有条件后,您需要提交表格$(“表格”).submit();

答案 2 :(得分:0)

您的事件处理函数正在调用另一个函数。

要停止事件,事件处理程序本身必须返回false

即。在你的情况下而不是

cekIsi($(this), true);

return cekIsi($(this), true);

另见此示例:http://jsfiddle.net/pbosakov/m67rL5hb/

答案 3 :(得分:0)

在表单提交事件回调中阻止sublit事件的默认功能

$('form#site-switch-form').submit(function(ev) {
    ev.preventDefault();
    // your code
    return false;
})

答案 4 :(得分:0)

尝试使用preventdefault

$('form.webform-client-form input:submit[id=edit-next],form.webform-client-form input:submit[id=edit-previous],form.webform-client-form input:submit[id=edit-submit]').click(function(e) {
    e.preventDefault();
    cekIsi($(this), true);
});
相关问题