if
else
ステートメントで何らかの問題が発生しているが、なぜそれが動作しているのかわからない。ボタンをクリックすると、ステートメントが実行され、すぐにelse
ステートメントが実行されます。elseステートメントがifとelseの両方を通過する場合
var s,
PasswordShowHide = {
settings: {
passwordInput: $('#password'),
showHideButton: $('.password-toggle')
},
init: function() {
s = this.settings;
this.bindUIActions();
},
bindUIActions: function() {
s.showHideButton.on("touchend click", function(e) {
e.preventDefault();
// var inputType = s.passwordInput.attr('type');
// console.log(inputType);
if (s.passwordInput.attr('type') === "password") {
s.passwordInput.attr("type", "text");
console.log("Changed to text");
s.showHideButton.html("Hide");
} else {
s.passwordInput.attr("type", "password");
console.log("Changed to password");
s.showHideButton.html("Show");
}
});
}
};
(function() {
PasswordShowHide.init();
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
Password
<button type="button" class="password-toggle">Show</button>
<input id="password" type="password" name="password" autocomplete="off" required>
</label>
これはあなたのイベントハンドラは、 "touchend" を処理し、 "クリック" のWebPACK
/**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
* building robust, powerful web applications using Vue and Laravel.
*/
// Vendor Files
// ------------------------------
// Autocomplete: http://projects.sergiodinislopes.pt/flexdatalist/
require('./vendor/jquery.flexdatalist.min');
// Components
// require('./components/disable');
require('./components/passwordValidator');
require('./components/passwordShowHide');
require('./components/select');
require('./components/showHide');
require('./components/date');
require('./components/menuDropdown');
まずは_impossible_です。関数が複数回呼び出される可能性が高いので、ここでは_independent_関数出力を2つ探しています。 – CBroe
イベントハンドラ全体が2回実行されることはありますか? 2回クリックしましたか?または、「touchend」と「click」の両方を取得しますか? – Thilo
コードをスニペットに変更し、うまく動作しているようです。あなたの問題はあなたのコードのどこかになければなりません。 – George