【问题标题】:OnClick event not firing when onClientClick returns trueonClientClick 返回 true 时未触发 OnClick 事件
【发布时间】:2013-03-21 14:30:44
【问题描述】:

我有一个带有 onclientclick 和 onclick 事件的按钮。我的页面中也有一个 jquery。此 jquery 在计时器 elpase 时注册按钮单击事件。 OnclientClick 调用一个函数来验证是否单击了单选按钮...当计时器运行时...如果用户单击(下一步)按钮而不选择选项(radiobuttonList)...它返回 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; }
}

我面临的问题是,如果我允许计时器在单选按钮列表中没有选择任何内容的情况下过去... Onclick 事件触发,成功回发,但是当我选择一个选项时...并且没有单击NEXT 按钮我允许计时器过去....回发不发生??.... 下一步按钮如下:

<asp:Button ID="btnNext" runat="server" Height="26px" 
            OnClientClick="if(!CheckIfOptionSelected()){return false;};" 
            OnClick="btnNext_Click" Text="Next"
            Width="77px" CausesValidation="False" />

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    试试这样:

    OnClientClick="return CheckIfOptionSelected();" UseSubmitBehavior="false"
    

    如果函数返回true,onclick肯定会起作用!

    【讨论】:

    • 是的,我也尝试过...但它不起作用...我还确认该方法返回 true...
    【解决方案2】:

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

    下面的示例 java 脚本函数用于在用户单击提交按钮而不输入时检查 null 值:

        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"  
    

    【讨论】:

      【解决方案3】:

      OnClientClick="return CheckIfOptionSelected(); return true;" 对我来说工作得很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 2016-04-13
        • 1970-01-01
        • 2012-11-20
        相关资源
        最近更新 更多