jquery - 自动完成电子邮件跨度不起作用

标签 jquery css jquery-ui

我正在使用 jQuery UI 构建一个自动完成的电子邮件字段。
该表格工作正常,但我有 2 个问题:

第一个

电子邮件不断地彼此相邻添加并构建在包含 div 之外,如下所示:

screen view

代码

<style type="text/css">

    #emailDiv
    {
        width: 300px;
        padding: 3px 3px 0;
        margin: 0 auto;
        border: 1px solid #aaa;
        background-color: #fff;
        cursor: text;
        position: absolute;
        float: left;
    }
    #email
    {
        border : none
    }
    #emailDiv span
    { 
       border:solid 1px black

        }

</style>
<script type="text/javascript">
    $(function() {
        $("#emailDiv").click(function() { $("#email").focus(); })
        $("#email").autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "AutoComplete.asmx/GetEmails",
                    data: "{ 'mail': '" + request.term + "' }",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function(data) { return data; },
                    success: function(data) {
                        response($.map(data.d, function(item) {
                            return {
                                value: item.Emails
                            }
                        }))
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            },
            select: function(e, ui) {
                var list = ui.item.value;
                var span = $("<span>").text(list);
                span.insertBefore("#email");


            },

            change: function() {
                $("#email").val("");


            }
        });
    });

</script>
</head>
 <body>
<form id="form1" runat="server">
<div>
<label>Email: </label>
<div id="emailDiv">
    <input type="text" id="email" />   
</div>
</div>
</form>
</body>
 </html>

第二个

更改后我无法将电子邮件文本字段设置为空 我必须单击 emailDiv 之外的某处才能将其设为空。

最佳答案

如果我理解你问题的正确性:

第一个问题

这取决于您的文档类型和全局 CSS 重置声明的其余部分,但通过这个示例,它解决了您的问题:

查看此 working Fiddle例子!

CSS

#emailDiv {
    width: 300px;
    padding: 3px 3px 0;
    margin: 0 auto;
    border: 1px solid #aaa;
    background-color: #fff;
    cursor: text;
    position: absolute;
    float: left;
}
#email {
    border: 0 none;
}
#emailDiv span {
    border: 1px solid black;
    float: left;
    padding: 2px;
    margin: 2px;
}
.clear {
    clear:both!important;
}

HTML 模拟

<form id="form1" runat="server">
    <div>
        <label>Email: </label>
        <div id="emailDiv" class="clear">
            <span>soneone@something.com</span>
            <span>soneone@thing.com</span>
            <span>soneone@ss.com</span>
            <span>soneone@aa.com</span>
            <span>soneone@dd.com</span>
            <input type="text" id="email" />   
        </div>
    </div>
</form>

第二期

添加$(this).val(''); return false; 到 select 函数的末尾,这将阻止更新值。

查看此 Working Fiddle例子!

$(function() {
  $("#emailDiv").click(function() {
    $("#email").focus();
  });

  $("#email").autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "AutoComplete.asmx/GetEmails",
        data: "{ 'mail': '" + request.term + "' }",
        dataType: "json",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataFilter: function(data) { return data; },
        success: function(data) {
          response($.map(data.d, function(item) {
            return {
              value: item.Emails
            }
          }));
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
      });
    },
    select: function(e, ui) {
      var list = ui.item.value;
      var span = $("<span>").text(list);
      span.insertBefore("#email");

      // clear the input
      $(this).val(''); return false;
    }
  });
});

似乎在源代码上,他们检查了错误!

关于jquery - 自动完成电子邮件跨度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10803411/

相关文章:

javascript - 删除项目后应如何更新索引?

css - 使用 css transitions 模仿 XD 的 "snap"动画

jquery - div 不会定位到容器的顶部

jquery - 在 jQuery UI 对话框上设置圆角类型

javascript - 使div在特定位置可拖动

javascript - 我如何使用jquery反转列表的顺序

jQuery.css() 仅用于 IE 样式

javascript - Kendo UI Grid 过滤后一次刷新排序

css - wp_enqueue_script 在文件路径中过早包含插件目录

php - 在图像下方添加文本,输出取决于输入语言?