当onClientClick返回true时,OnClick事件不触发

3

我有一个按钮,同时绑定了onclientclick和onclick事件。我的页面上还有一个jquery。当计时器结束时,这个jquery会注册按钮的点击事件。OnclientClick调用一个函数来验证是否选择了单选按钮...当计时器正在运行时...如果用户在没有选择选项(radiobuttonList)的情况下点击(Next)按钮...就会返回false,从而阻止服务器端事件发生...然而,如果计时器结束并且没有选择任何项目,则表单将被提交并带有空白选项。以下是代码:

var countdownTimer, countdownCurrent;
$(document).ready(function() {
    countdownCurrent = $('#ctl00_MainContent_example2submit').val() * 100;
    countdownTimer = $.timer(function () {
    var min = parseInt(countdownCurrent / 6000);
    var sec = parseInt(countdownCurrent / 100) - (min * 60);
    var micro = pad(countdownCurrent - (sec * 100) - (min * 6000), 2);
    var output = "00"; if (min > 0) { output = pad(min, 2); }
    $('.countdowntime').html(output + ":" + pad(sec, 2) + ":" + micro);
    if (countdownCurrent == 0) {
        $('#ctl00_MainContent_btnNext').click();

    } else {
        countdownCurrent -= 7;
        if (countdownCurrent < 0) { 
            countdownCurrent = 0; 
        }
    }
}, 70, true);
$('#example2submit').bind('keyup', function (e) { 
    if (e.keyCode == 13) { 
        countdownReset(); 
    } 
});

function CheckIfOptionSelected() {
    var vFlag = true;
    var radioButton1 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_0'];
    var radioButton2 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_1'];
    var radioButton3 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_2'];
    var radioButton4 = document.forms[0].elements['ctl00_MainContent_rdBtnListOptions_3'];

    if (radioButton1.checked == false && radioButton2.checked == false && radioButton3.checked == false && radioButton4.checked == false && countdownCurrent > 0) {
        vFlag = false;
    }

    else {
        countdownReset();
        vFlag = true;

    }
    return vFlag;
}

function countdownReset() {
    var newCount = parseInt($('#ctl00_MainContent_example2submit').val()) * 100;
    if (newCount > 0) { countdownCurrent = newCount; }
}

我面临的问题是,如果我在单选按钮列表中没有选择任何内容就允许定时器过期......那么点击事件将触发一个成功的回发,但是当我选择一个选项时......而不点击NEXT按钮,我允许定时器过期......回发不会发生??.... 下一步按钮如下:
<asp:Button ID="btnNext" runat="server" Height="26px" 
            OnClientClick="if(!CheckIfOptionSelected()){return false;};" 
            OnClick="btnNext_Click" Text="Next"
            Width="77px" CausesValidation="False" />
3个回答

4
尝试像这样做:
OnClientClick="return CheckIfOptionSelected();" UseSubmitBehavior="false"

如果该函数返回 true,onclick 就一定会起作用!

1
是的,我也尝试过那个方法...但它不起作用...我还确认了该方法返回 true... - Mingsho Nembang

0

OnClientClick="return CheckIfOptionSelected(); return true;" 对我来说完美地运作。


0

如果我们使用UseSubmitBehavior="false",它将无法工作。也不需要给CausesValidation="False"。

下面是一个示例JavaScript函数,用于在用户单击提交按钮而未输入任何内容时检查空值:

    function validatePwd()
      {
        var txtpwd = document.getElementById('txtpwd').value;
        if (txtpwd == "") {
            alert("Please enter new  password");
            return false;
        }
        else {
            return true;
        }

    } 

在 ASP.NET 按钮控件中,只需要下面的事件就足够了

OnClientClick="return validatePwd();" 

OnClick="btnsubmit_Click"  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接