【问题标题】:jquery change more than one input type at oncejquery一次更改多个输入类型
【发布时间】:2020-08-02 07:39:26
【问题描述】:

我已经创建了一些其他线程,但到目前为止还没有任何有效的答案。

我有这个代码:

jQuery(function ($) {
$('.nm-myaccount-login-inner .form-row .lawrence_password span.required').append(
"<div class='hide-show'><span toggle='#password' class='fa fa-fw field-icon toggle-password fa-eye'></span></div>");

$('.nm-myaccount-login-inner .form-row .lawrence_register_password span.required').append(
"<div class='hide-show'><span toggle='#password' class='fa fa-fw field-icon toggle-password fa-eye'></span></div>");
});

jQuery(function($){
  $(".toggle-password").click(function() {

  $(this).toggleClass("fa-eye fa-eye-slash");
  var input = $($(this).attr("toggle"));
  if (input.attr("type") == "password") {
    input.attr("type", "text");
  } else {
    input.attr("type", "password");
  }
});


});

这样做是在“.lawrence_password span”和“lawrence_register_password span”中添加一个可点击的图标。 然后当一个人点击该图标时,输入密码的类型将从:&lt;input type="password"&gt; 更改为&lt;input type="text"&gt;,因此密码变得可见。

但这只会影响我的第一个输入字段,而不是我的所有&lt;input type="password"&gt;

我希望这个 jquery 函数适用于所有 &lt;input type="password"&gt;

我的html:

<p class="form-row form-row-wide">
                    <label for="password" class="lawrence_password">Password <span class="required">*<div class="hide-show"><span toggle="#password" class="fa fa-fw field-icon toggle-password fa-eye-slash"></span></div></span></label>
                    <input class="input-text" type="text" name="password" id="password">
                </p>

注册密码输入与此相同,只有“lawrence_password_register”类。

这可能吗?谢谢!

【问题讨论】:

  • 你能包含你的html吗?请把它放在Snippet上
  • 您好,我编辑了帖子以包含 html :)
  • 您的 input 变量以 id 为目标,它们应该是唯一的,因此它只会返回一个元素。
  • 这个 HTML 显示 1 个输入,我想检查的是每个输入的 id,因为你似乎有更多,这是因为@msg 解释的原因
  • 您希望按钮同时显示它对应的input 还是每个密码字段?

标签: javascript jquery html woocommerce


【解决方案1】:

我认为您需要做的就是使用class 而不是id。如果您在&lt;div&gt; 中更改&lt;span&gt;toggle="someClass" 属性,其中每个&lt;input type="password"/&gt; 都有class="someClass" 类。

下面是一个示例,我在输入上设置class="password",然后在您的&lt;span toggle=".password"&gt;...上设置,这就是您需要更改的全部内容。

jQuery(function ($) {
  $('.lawrence_password span.required').append(
  "<div class='hide-show'><span toggle='.password' class='fa fa-fw field-icon toggle-password fa-eye'>Toggle Button</span></div>");

  $('.lawrence_register_password span.required').append(
  "<div class='hide-show'><span toggle='.password' class='fa fa-fw field-icon toggle-password fa-eye'>Toggle Button</span></div>");

  $(".toggle-password").click(function() {
    var input = $($(this).attr("toggle"));

    if (input.attr("type") === "password") {
      input.attr("type", "text");
    } else {
      input.attr("type", "password");
    }
  });


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p class="form-row form-row-wide">
    <label for="password" class="lawrence_password">Password <span class="required">*     </span></label>
    <input class="input-text password" type="password" name="password" id="password">
</p>
<p class="form-row form-row-wide">
    <label for="password" class="lawrence_register_password">Password Register<span class="required">*</span></label>
    <input class="input-text password" type="password" name="password" id="password">
</p>

【讨论】:

  • 既然他想改变两者.. 为什么要单独针对他们?只需使用一个类。这也将允许您简化第一个函数。
  • 好吧,我错过了。让我快速改变我的答案。感谢@msg 的提醒
  • 我可能会误解“我希望此 jquery 函数适用于所有密码字段”
  • 他基本上想用一个代码库,即使他添加更多&lt;input type="password" /&gt;
  • 我回家后测试一下!谢谢你:)
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2023-03-09
  • 2014-05-06
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多