【解決方法】キャッチされない型エラー: $(…).registermessage は関数ではありません


こんにちはチーム

登録 js ファイルでこのエラーが発生しています。どうすれば解決でき、jquery プラグイン ライブラリが含まれていますか。

私が試したこと:

JavaScript
<pre>/**
*@author:Gcobani Mkontwana
*@date:03/05/2023
*@Register users to the form and validate empty submission.
**/
$(document).ready(function() {
  $('#registration-form').submit(function(event) {
    event.preventDefault(); // prevent the form from submitting normally

    var name = $('#name').val();
    var email = $('#email').val();
    var password = $('#password').val();

    // validate the form data
    if (!name || !email || !password) {
      alert('Please fill in all fields');
      return;
    }

    // submit the form data using AJAX
			$.ajax({
			type: 'POST',
			url: 'register.php',
			data: {
			name: name,
			email: email,
			password: password
		},
		success: function(response) {
		if (response === 'success') {
		$('body').registerMessage('Registration successful', 'success');
		window.location.href = 'dashboard.php';
		} else {
		$('body').registerMessage('Registration failed', 'alert');
    }
	}
	});

  });
});

/**
<pre lang="Javascript">*@author:Gcobani Mkontwana
*@date:03/05/2023
*@Validates messages for registering users to the ecommerce_site.
*/
(function($) {
  $.fn.registerMessage = function(message, type) {
    // create a new element to display the message
    var messageElem = $('<div>', {
      class: 'register-messages ' + type,
      text: message
    });

    // append the message element to the div card
    $('#registration-messages').html(messageElem);

    // set a timeout to remove the message element after 5 seconds
    setTimeout(function() {
      messageElem.remove();
    }, 5000);
  };
})
<div class="card">
  <div class="card-body">
    <form id="registration-form" action="register.php" method="POST">
      <div class="form-group">
        <input type="text" class="form-control" id="name" name="name" placeholder="Name">
      </div>
      <div class="form-group">
        <input type="email" class="form-control" id="email" name="email" placeholder="Email">

      </div>
      <div class="form-group">
        <input type="password" class="form-control" id="password" name="password" placeholder="Password">
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>
    </form>
  </div>
 <div class="form-group" id="registration-messages"></div>
</div>
<!----Javascript files validation during form submission ---->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="js/register-messages.js"></script>
<script src="js/register.js"></script>

解決策 1

あなたの register-messages.js スクリプトが無効です。 関数を定義して、 registerMessage 拡張子ですが、それを呼び出すことはありません。

JavaScript
(function($) {
  $.fn.registerMessage = function(message, type) {
    ...
  };
})

追加 (jQuery); そのファイルの最後まで:

JavaScript
(function($) {
  $.fn.registerMessage = function(message, type) {
    ...
  };
})(jQuery);

コメント

タイトルとURLをコピーしました