首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从输入字段中添加和删除数据

从输入字段中添加和删除数据
EN

Stack Overflow用户
提问于 2015-03-19 20:09:48
回答 3查看 818关注 0票数 0

我有这样的表格:

代码语言:javascript
复制
 <form role="form" method="POST">
  <div class="form-group">
    <div class="form-group input-group">
      <span class="input-group-addon">
        Description
      </span>
      <input class="form-control" type="text" name="descr" maxlength="32" placeholder="Optional" >
    </div>
  </div>
  <button type="submit" class="btn btn-success" name="name_new">
    Add
  </button>
</form>

我想在它下面添加一个按钮/单词列表(例如:汽车、食物、电池、房子),当用户点击这个单词时,它会被添加到被称为"descr“的输入字段中。如果他再次单击该单词,它将从输入字段中移除。

我点击汽车,食物,房子,输入包含:“汽车,食物,房子”。我再次点击食物,输入包含“车,房子”。

另外,如果在我点击pe word/按钮之后,它被转发到列表的开头(例如;

汽车,食物,电池,垄断,金钱,卡片,处女座,网站如果我点击“卡片”,列表变成:卡片,汽车,食物,电池,垄断,金钱,处女座,网站。

如果您对我如何使用JQuery/Json/javascript做这件事有任何建议,请给我一个提示/示例。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-19 20:33:14

https://jsfiddle.net/sgbo3e1s/3/

代码语言:javascript
复制
$(document).ready(function(){
    var $desc = $('.result');
    var selected = [];
    $('.word').click(function(){
        var $this = $(this);
        var val = $this.text();
        if($this.hasClass('added')){
            $this.removeClass('added');
            selected.splice($.inArray(val, selected),1);
        }
        else{
            $this.addClass('added');
            selected.unshift(val);
            if(!$this.hasClass('first')){
                $this.insertBefore('.first');
                $('.first').removeClass('first');
                $this.addClass('first');
            }
        }
        $desc.val(selected.join(','));
    });
});
票数 0
EN

Stack Overflow用户

发布于 2015-03-19 20:23:59

对此代码进行了测试和工作。

问题:当卡在文字输入,汽车被添加,汽车会发现在字卡,而不是添加汽车,卡失去了前3个字符,只留下了ds。

上述问题被逗号要求所激怒。添加的单词将以, (逗号空间)作为前缀。

如果添加的单词是第一个单词,那么它将类似于, word

解决办法:

为了去掉前面的逗号,我使用了t.replace(/^, /,'');,它将行(^)开头的逗号替换为'‘空。

要想得到整个单词,而不是另一个单词(卡片中的汽车),这个单词的边界必须包含在移除中。一个单词前面有一个空格或输入的开头。RegEx表达式在JavaScript中是"( \^)“。(输入的空格或开头)

单词尾部边界要么是逗号,要么是输入的结尾。regEx是(,\\$)

然后,在快速添加和删除之后会发生一些令人费解的事情,所以我添加了两个表达式来删除它们:,以及在输入末尾挂一个逗号。

代码语言:javascript
复制
 echo <<<EOT
<!DOCTYPE html>
<html>
<head><title>Text</title>
<form role="form" method="POST">
<div class="form-group">
<div class="form-group input-group">
<span class="input-group-addon">Description</span>
<input id="txt" class="form-control" type="text" name="descr" maxlength="32" placeholder="Optional" >
</div></div>
</form>
<button onclick="show('car')">car</button><button onclick="show('food')"> food</button><button onclick="show('battery')"> battery</button><button onclick="show('monopoly')">monopoly</button><button onclick="show('money')">money</button><button onclick="show('cards')"> cards</button><button onclick="show('virgo')"> virgo</button>
<script type="text/javascript">
//<![CDATA[
var txt = document.getElementById('txt');
function show(word){
  var re = new RegExp("( |^)" + word + "($|,)" ,"i");
  if(txt.value.search(re) != -1){
    var str = txt.value;
    str = str.replace(re, "");
    str = str.replace(/,,/gi, ",");
    str = str.replace(/,$/gi, "");
    str = str.replace(/, ,/gi, ",");
    txt.value = str.replace(/,,/gi, ",");
  }
  else{
    var str = txt.value ;
    str.replace(/,/gi, "");
    var t = txt.value + ', ' +  word;
    txt.value = t.replace(/^, /,'');
  }
}
//]]>
</script></body></html>
EOT;
票数 0
EN

Stack Overflow用户

发布于 2015-03-19 20:29:58

您可以这样做,way...Assuming,您单击的项目有类.item。另外,在输入中添加一个类以便于实现目标。您还需要提取lin当前数据,并为新数据分配一个逗号和空间。

代码语言:javascript
复制
<form role="form" method="POST">
 <div class="form-group">
<div class="form-group input-group"> <span class="input-group-addon">Description</span>
  <input class="form-control items" type="text" name="descr" maxlength="32" placeholder="Optional" >
  </div>
  </div>
 <button type="submit" class="btn btn-success" name="name_new">Add</button>
</form>
<a href="" class="item" >Car</a>
<a href="" class="item" >House</a>   


$(".item").on("click", function(e) {
   itemname = $(this).text();
   current = $(".items").val();   
   $(".items").val(current+itemname+", ");
   e.preventDefault();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29154048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档