在单个文本框中获取多个表达式

时间:2016-04-06 09:30:01

标签: javascript jquery html textbox

我想在单个文本框中获取多个表达式,下面是我的代码。

<html>
<body>
    <input type="text" style="width:250px" id="txtSearch" />
    <ul id="ul1" style="display:none;">
        <li id="letters">Letter</li>
        <li id="words">Word</li>
    </ul>
    <ul id="ul2" style="display:none;">
        <li id="letterA">A</li>
        <li id="letterB">B</li>
        <li id="letterC">C</li>
        <li id="letterD">D</li>
        <li id="letterE">E</li>
        <li id="letterF">F</li>
        <li id="letterG">G</li>
        <li id="letterH">H</li>     
        <li id="letterI">I</li>
    </ul>
    <ul id="ul3" style="display:none;">
        <li id="wordA">Apple</li>
        <li id="wordB">Ball</li>
        <li id="wordC">Cat </li>
        <li id="wordD">Dog</li>
        <li id="wordE">Egg</li>
        <li id="wordF">Fish</li>
        <li id="wordG">Gun</li>
        <li id="wordH">Hat</li>
        <li id="wordI">Ice</li>
    </ul>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script>
        document.getElementById('txtSearch').onkeypress = function (e) {
            if (e.keyCode === 64 && 107) {
                $('#ul1').css("display", "inline");
            } else {
                return false;
            }
        };
        $(document).ready(function () {
            var x = "";
            $('#ul1 li').click(function (event) {
                $('#txtSearch').val($(this).text() + " . ")
                x = $('#txtSearch').val();
                $('#ul1').hide();
                $('#ul2').show();
                $('#ul3').hide();
            });
            $('#ul2 li').click(function () {
                $('#txtSearch').val(x + " " + $(this).text())
                $('#ul1').hide();
                $('#ul2').hide();
            });
            $('#ul1 li:last-child').click(function (event) {
                $('#txtSearch').val($(this).text() + " . ")
                x = $('#txtSearch').val();
                $('#ul1').hide();
                $('#ul2').hide();
                $('#ul3').show();
            });
            $('#ul2 li').click(function () {
                $('#txtSearch').val(x + " " + $(this).text())
                $('#ul1').hide();
                $('#ul2').hide();
            })
            $('#ul3 li').click(function () {
                $('#txtSearch').val(x + " " + $(this).text())
                $('#ul1').hide();
                $('#ul2').hide();
                $('#ul3').hide();
            })
        });
    </script>
</body>
</html>

我只能显示一个表达式,就像我输入&#39; @&#39;在文本框中选择字母和特定字母(比如说A)。我在这里得到 Letter.A 的输出,我只能选择一个表达式,

如果我输入&#39; +&#39;然后我可以选择第二个表达式。我想要像

这样的东西

Letter.A + Word.Apple 或者我可以选择 Letter.A + Letter.B Word.Apple + Word.Ball

1 个答案:

答案 0 :(得分:0)

您需要在onkeypress事件中处理+

else if (e.keyCode === 43) {
    $('#ul1').css("display", "inline");
  }

下面的完整代码,我已经修改了文本添加到文本框的方式,因此它不会丢失。

document.getElementById('txtSearch').onkeypress = function(e) {
  if (e.keyCode === 64 && 107) {
    $('#ul1').css("display", "inline");
  } else if (e.keyCode === 43) {
    $('#ul1').css("display", "inline");
  } else {
    return false;
  }
};
$(document).ready(function() {
  var addtext = function(t) {
    $('#txtSearch').val($('#txtSearch').val() + t);
  }
  $('#letters').click(function(event) {
    addtext(" " + $(this).text() + ".");
    $('#ul1').hide();
    $('#ul2').show();
    $('#ul3').hide();
  });

  $('#ul2 li').click(function() {
    addtext($(this).text());
    $('#ul1').hide();
    $('#ul2').hide();
    $('#ul3').hide();
  });
  $('#words').click(function(event) {
    addtext(" " + $(this).text() + ".");
    $('#ul1').hide();
    $('#ul2').hide();
    $('#ul3').show();
  });

  $('#ul3 li').click(function() {
    addtext($(this).text());
    $('#ul1').hide();
    $('#ul2').hide();
    $('#ul3').hide();
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" style="width:250px" id="txtSearch" />
<ul id="ul1" style="display:none;">
  <li id="letters">Letter</li>
  <li id="words">Word</li>
</ul>
<ul id="ul2" style="display:none;">
  <li id="letterA">A</li>
  <li id="letterB">B</li>
  <li id="letterC">C</li>
  <li id="letterD">D</li>
  <li id="letterE">E</li>
  <li id="letterF">F</li>
  <li id="letterG">G</li>
  <li id="letterH">H</li>
  <li id="letterI">I</li>
</ul>
<ul id="ul3" style="display:none;">
  <li id="wordA">Apple</li>
  <li id="wordB">Ball</li>
  <li id="wordC">Cat</li>
  <li id="wordD">Dog</li>
  <li id="wordE">Egg</li>
  <li id="wordF">Fish</li>
  <li id="wordG">Gun</li>
  <li id="wordH">Hat</li>
  <li id="wordI">Ice</li>
</ul>