1

我有一个 JQuery 自动完成功能,可以点击“添加”按钮,并让用户输入显示在 JQuery 可排序列表中的屏幕上,但我想将输入的字符串分成多个子字符串,在“,”处拆分。这是我尝试过的:

$(".addButton").click(function(e) {
    e.preventDefault();
    var item = $("input[name='phoneItem']").val();
    // set var $li to the string inputted by the user
    var $li = $("<li class='ui-state-default'\>").text(item);
    // parses input string, splitting at commas into substrings
    var $liArray = $li.split(", ");
    // adds var $li to the gui
    for (var i = 0; i < $liArray.length; i++) {
        $("#sortable").append($li);
    };

    // refreshes the page so var $li shows up
    $("#sortable").sortable("refresh");
});

这就是我的 .html 的样子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />

    <link rel="stylesheet" type="text/css" href="stylesheet2.css">
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>-->
    <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>
    <form class="ui-widget" name="phoneForm"><!--The autocomplete search bar-->
        <input id="tags" size="50" name="phoneItem" placeholder="Add a Phone"/>


        <button class="addButton"><!--The add button-->
            Add
        </button>
        <span class="content"><!-- The sortable list of phones-->
            <ul id="sortable">
              <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
              <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
            </ul>
        </span>
    </form>
</body>

但我得到这个错误:

未捕获的类型错误:对象 [对象对象] 没有方法“拆分”

非常感谢任何想法/建议/答案。谢谢!

4

2 回答 2

3

那么$li是 jQuery 对象,它没有任何split方法。尝试从中获取文本li并将其拆分:

var t=$li.text();
var $liArray = t.split(", ");

但是由于您已经在 variable 中包含了文本item,您可以拆分它而不是$li再次访问:

var $liArray = item.split(", ");
于 2013-04-14T23:37:00.667 回答
0

不应该var $li = $("<li class='ui-state-default'\>").text(item);

是:var $li = $("#tags").val();var $li = $("input[name='phoneItem']").val();

我认为您的原始行不是有效的 jQuery,而且它也没有“将 var $li 设置为用户输入的字符串”。

这行var item = $("input[name='brewItem']").val();似乎是不必要的,因为变量 item 在声明后没有使用。

于 2013-04-14T23:34:33.473 回答