簡體   English   中英

在jQuery中,我的功能無法正常工作

[英]In jQuery my function is not work

我試圖用jQuery這樣做兩個條件語句。

$('#user_name, #user_email, #user_password').keyup(function () {
    if ($('#output-name').is('.field-output-comple') &&
            $('#output-email').is('.field-output-comple') &&
            $('#output-password').is('.field-output-comple') &&
            $('#confirm-terms-of-use').is(':checked')
    ) {
        $('#register-button').removeAttr('disabled');
    } else {
        $('#register-button').attr('disabled', 'disabled');
    }
});

$('#confirm-terms-of-use').change(function() {
    if ($('#output-name').is('.field-output-comple') &&
            $('#output-email').is('.field-output-comple') &&
            $('#output-password').is('.field-output-comple') &&
            $('#confirm-terms-of-use').is(':checked')
    ) {
        $('#register-button').removeAttr('disabled');
    } else {
        $('#register-button').attr('disabled', 'disabled');
    }
});

但是您知道此代碼是重復的。

if ($('#output-name').is('.field-output-comple') &&
    $('#output-email').is('.field-output-comple') &&
    $('#output-password').is('.field-output-comple') &&
    $('#confirm-terms-of-use').is(':checked')
) { 
    $('#register-button').removeAttr('disabled');
} else {
    $('#register-button').attr('disabled', 'disabled');
}

所以我用這樣的功能制作這段代碼。

$('#user_name, #user_email, #user_password').keyup(isValidPassword())
$('#confirm-terms-of-use').change(isValidPassword())

function isValidPassword() {
    if ($('#output-name').is('.field-output-comple') &&
            $('#output-email').is('.field-output-comple') &&
            $('#output-password').is('.field-output-comple') &&
            $('#confirm-terms-of-use').is(':checked')
    ) {
        $('#register-button').removeAttr('disabled');
    } else {
        $('#register-button').attr('disabled', 'disabled');
    }
}

但是,效果不佳。 沒有錯誤,但是isValidPassword可能不輸出任何內容。 我在哪里弄錯了? 感謝您的閱讀。

您需要將函數引用傳遞給事件處理程序,您要調用函數isValidPassword並將其undefined的值傳遞為事件處理程序。

$('#user_name, #user_email, #user_password').keyup(isValidPassword)
$('#confirm-terms-of-use').change(isValidPassword)

這沒有按照您的想法做:

.keyup(isValidPassword())

這不會將isValidPassword函數本身傳遞給keyup ,它會執行該函數並傳遞該函數的結果 而且該函數不返回任何內容,因此其結果是undefined

不要執行函數,只需將函數本身作為變量傳遞:

.keyup(isValidPassword)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM