引入类别

时间:2017-10-18 08:25:31

标签: javascript jquery

在我制作的内容中,您将值引入输入文本,其ID为Inpt1并一直显示为5.

如果jQuery找到与数组中这些值的相关性,它会将数组app_end的对应值放在其前面的label中,并带有ID Inpt1_L,换句话说,相关的类别。

以下是代码如下所示:

 var choices = ['Cookie', 'Meat', 'Milk']; // The Choices available
 var app_end = ['(CookieCategory)', '(MeatCategory)', '(MilkCategory)']; // Their appendages


    var elem2 = $('#Inpt1_L');
    $('#Inpt1').each(function() {
    var elem = $(this);
    // Save current value of element
    elem.data('oldVal', elem.val());

    // Look for changes in the value
    elem.bind("propertychange change click keyup input paste", 
    function(event){

     if (elem.data('oldVal') != elem.val()) {

         var lowercasedElem = elem.val().toLowerCase();
         // Run through array
         for (i=0;i<choices.length;i++){
                   var appendage_For = app_end[i];

                   if((choices[i].toLowerCase() == lowercasedElem)){

                    elem2.empty();
                    elem2.append(appendage_For);
                    return true;
                 } else {
                    elem2.empty();
                }
             }
        }
    });
});

我试图做到这一点,以便比较也可以在前后拾取任何类型的文本。如同,有人可以输入牛奶,但他们也可以键入山羊奶或牛奶牛奶,它仍然会将其归类为牛奶。

到目前为止,我的尝试一直是徒劳的。我尝试过创建:

if(
   (choices[i].toLowerCase() == lowercasedElem) || 
   (choices[i].toLowerCase() == lowercasedElem+"") || 
   (choices[i].toLowerCase() == ""+lowercasedElem+"")
  ){

但什么都没发生。甚至没有空格。

我想到了{p> .substr,但我不确定如何将其应用于这种情况。

我怎样才能实现预期?

其次,将所有这些代码封装到一个函数中,并应用For(){}来计算类#Inpt的字段数,是否会使该函数可以重用?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Elmer Dantas的帮助下,我能够缩小我需要的范围。

我更改了if条件以使用.search并且它有效。

以下是代码和功能代码段。

if(lowercasedElem.search((choices[i].toLowerCase())) > -1)

&#13;
&#13;
var choices = ['Cookie', 'Meat', 'Milk'];
var app_end = ['(CookieCategory)', '(MeatCategory)', '(MilkCategory)'];

var elem2 = $('#Label1_L');
$('#Inpt1').each(function() {
  var elem = $(this);
  elem.data('oldVal', elem.val());
  elem.bind("propertychange change keypress click keyup input paste select reset", function(event) {
    elem2.empty();
    if (elem.data('oldVal') != elem.val()) {
      var lowercasedElem = elem.val().toLowerCase();
      for (i = 0; i < choices.length; i++) {
        var appendage_For = app_end[i];
        if (lowercasedElem.search((choices[i].toLowerCase())) > -1) {
          elem2.empty();
          elem2.append(appendage_For);
          return true;
        } else {
          elem2.empty();
        }
      }
    }
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <div>
      <input type="text" id="Inpt1">
      <label id="Label1_L"></label>
    </div>
  </li>
</ul>
&#13;
&#13;
&#13;