У меня есть два html-тега для паролей:
<input maxlength="30" size="20" id="pass1" name="password" autocomplete="off" type="password">
<input maxlength="30" size="20" id="pass2" name="password" autocomplete="off" type="password">
Моя цель - сделать несколько обработок при записи в каждый вход.Поэтому я выбираю onkeyup.Просто чтобы прояснить мою проблему, я могу уменьшить свой js-код до следующего:
var pass_input;
var pswd1="";
pass_input=document.getElementById("pass1");
pass_input.onkeyup = function(event) {
pswd1=pswd1+event.key;
}
, так как у меня есть два входных тега, поэтому мне нужен другой js-код для ввода pass2, такой как pass1, поэтому мой код будетбыть:
var pass_input;
var pswd1="";
pass_input=document.getElementById("pass1");
pass_input.onkeyup = function(event) {
pswd1=pswd1+event.key;
}
var pswd2="";
pass_input=document.getElementById("pass2");
pass_input.onkeyup = function(event) {
pswd2=pswd2+event.key;
}
этот код работает нормально.После записи в теги ввода и console.log pswd1 и pswd2 в консоли браузера я получил хорошие результаты.
В моем проекте обработчик onkeyup не такой простой, как то, что я пишу в опубликованном коде, на самом деле этоболее сложныйКроме того, этот код должен быть для каждого тега ввода текста / пароля в моем проекте, а также во многих других файлах.Поэтому, чтобы сделать код правильным и легким для обслуживания, я попытался сделать код js в общем файле js и загружать его, когда мне нужно.
Вопрос состоит в том, как различать переменные буксировки pswd1 и pswd2 в общемКод файла .js.Вот я и подумал о команде eval.Таким образом, мое содержимое файла common.js:
pass_input.onkeyup = function(event) {
eval(pass_var_name+"="+pass_var_name+"+event.key");
}
, а содержимое моего html-файла:
<input maxlength="30" size="20" id="pass1" name="password" autocomplete="off" type="password">
<input maxlength="30" size="20" id="pass2" name="password" autocomplete="off" type="password">
<script>
var pass_input;
var pswd1, pswd2;
pass_input=document.getElementById("pass1");
pass_var_name="pswd1";
</script>
<script src="common.js"></script>
<script>
pass_input=document.getElementById("pass2");
pass_var_name="pswd2";
</script>
<script src="common.js"></script>
, но если я выполняю свой код и пытаюсь писать в каждом входе, дляНапример, в pass1 я пишу "kkk", а в pass2 я пишу "lll", затем отображаю в консоли браузера в console.log, получаю для pswd1 пустую строку, а для pswd2 я получаю строку "kkklll".
Кажется, что js интерпретирует eval в обработчике opnkeyup как раз во время нажатия клавиатуры.
Есть идея, как это исправить?Есть ли лучшая идея для достижения моей цели?