javascript - jQuery keyup - 多个输入并传递 ID 名称?

标签 javascript jquery

我在表单中有许多输入 ID,如下所示(示例,不是完整的表单)这是针对 Chrome 扩展的,因此我无法修改表单。

<form>
  <input id="data-draft-brand-name" />
  <input id="data-draft-name-en-us" />
  <input id="data-draft-bullet-points-bullet1-en-us" />
  <input id="data-draft-bullet-points-bullet2-en-us" />
  <input id="data-draft-description-en-us" />
</form>

我正在做的是在每个输入上使用 keyup,然后对每个 id 执行相同的操作,如下所示:

$( "#data-draft-description-en-us" ).keyup(function() {
  var currentVal = $(this).val();
  currentVal = currentVal.toLowerCase();

  var currentLength = currentVal.length;
  currentLength = 2000 - currentLength;

  $('#description-count').text(`${currentLength} characters left`);

  if(currentVal.indexOf('word') !== -1) {
    $('#data-draft-description-en-us').css('border','1px solid red');
    $('#data-draft-description-en-us').css('background','red');
  } else {
    $('#data-draft-description-en-us').css('border','1px solid #a6a6a6');
    $('#data-draft-description-en-us').css('background','none');
  }
});

正如你所看到的,会有很多重复。无论如何,我可以将 id 数组传递给 keyup,然后在函数中访问 id。一些伪代码作为示例..

$(["#data-draft-brand-name","#data-draft-name-en-us"]).keyup(function(inputID) {
  $(inputID).css('border','1px solid red');
}

最佳答案

给你一个解决方案

$("#data-draft-brand-name, #data-draft-name-en-us").keyup(function() {
  var id = $(this).attr('id');
  $('#' + id).css('border','1px solid red');
});

无需提供方括号[]id应以逗号分隔。

这是jsfiddle https://jsfiddle.net/tjkah0ck/2/

$( "#data-draft-brand-name, #data-draft-name-en-us" ).keyup(function() {
    var currentVal = $(this).val();
        currentVal = currentVal.toLowerCase();
    console.log(currentVal);
    var currentLength = currentVal.length;
        currentLength = 2000 - currentLength;

    $('#description-count').text(`${currentLength} characters left`);

    if(currentVal.indexOf('word') !== -1) {
        $('#data-draft-description-en-us').css('border','1px solid red');
        $('#data-draft-description-en-us').css('background','red');
    } else {
        $('#data-draft-description-en-us').css('border','1px solid #a6a6a6');
        $('#data-draft-description-en-us').css('background','none');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
   <input id="data-draft-brand-name"/>
   <input id="data-draft-name-en-us"/>
   <input id="data-draft-bullet-points-bullet1-en-us" />
   <input id="data-draft-bullet-points-bullet2-en-us" />
   <input id="data-draft-description-en-us" />
</form>

希望这对您有帮助。

关于javascript - jQuery keyup - 多个输入并传递 ID 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524534/

相关文章:

javascript - 拒绝链式 promise

javascript - 不允许双引号的正则表达式不起作用

javascript - PHP 数字格式不允许 jquery sum

jQuery Coda Slider IE 6,7 切换标签时崩溃...我讨厌 IE

php - mysql更改时更新页面?

javascript - 带有 qtip 的 Angular 动态模板

javascript - 使用 jquery 垂直切换菜单

javascript - 将图像提取到 flexslider

json - Ajax 错误 “SyntaxError: JSON.parse: unexpected character”

javascript - 在 bootstrap 3 中从 JS 触发 Tooltip