web-dev-qa-db-ja.com

フィールドに入力するまで送信ボタンを非アクティブにします

RSFormsを使用しています!プロと私は、4つのフィールドに入力する必要があるフォームがあります。すべてのフィールドに入力するまで送信ボタンを非アクティブにする方法はありますか?

私は以下を試しましたが、正しく機能していません:

function validate(){
    if ($('#FullName').val().length   >   0   &&
        $('#Email').val().length  >   0   &&
        $('#VenueName').val().length  >   0   &&
        $('#VenuePostcode').val().length    >   0) {
        $("input[type=submit]").prop("disabled", false);
    }
    else {
        $("input[type=submit]").prop("disabled", true);
2
RustyJoomla

JQueryを使用して送信ボタンを無効にすることから始めることをお勧めします(JavaScript以外のユーザーがボタンを無効にしないようにするため)。

jQuery("#Submit").prop('disabled', true);

次に、このコードを使用して、すべてのフィールドに入力した場合に送信ボタンを有効にします。

var toValidate = jQuery('#FullName, #Email, #VenueName, #VenuePostcode'),
    valid = false;
toValidate.keyup(function () {
    if (jQuery(this).val().length > 0) {
        jQuery(this).data('valid', true);
    } else {
        jQuery(this).data('valid', false);
    }
    toValidate.each(function () {
        if (jQuery(this).data('valid') == true) {
            valid = true;
        } else {
            valid = false;
        }
    });
    if (valid === true) {
        jQuery("#Submit").prop('disabled', false);
    } else {
        jQuery("#Submit").prop('disabled', true);
    }
});

StackOverflowの this post からコードを変更しました。

簡単なデモ: http://jsfiddle.net/ddxqu7yy/

2
johanpw