检查输入文本是否包含子字符串JQuery-Mobile

时间:2012-05-09 17:43:56

标签: jquery jquery-mobile

我正在尝试检查输入文本的包含是否包含子字符串,它是一个变量: 这是我的代码:

<script>
    $("#envoi_search").click(function () {

        var contenu = $("#champ").val() ;
        $("#envoi_search").click(function() {
            $("#result").html('') ;
            $('#envoi_search').attr("disabled", "disabled");
            $.ajax({
                type: "POST",
                url: "http://www.edumobile.org/blog/uploads/XML-parsing-data/Data.xml",
                data: "{}",
                cache: false,
                dataType: "xml",
                success: function(data) {
                    $(data).find("Book").each(function () {
                        var temp = $(this).find("name").text() ;
                        if (temp.toLowerCase().contenu > -1) {
                            $("#result").append("<br> Titre : " + temp);
                            $("#result").append("<br> Auteur : " + $(this).find("address").text());
                            $("#result").append("<br> Pays : " + $(this).find("country").text());
                            $('#envoi_search').attr("disabled", "");
                        }
                    });

                }
            });
        });
    });
</script>

我不知道为什么它不起作用。你对我的问题有任何想法吗? 谢谢:))

1 个答案:

答案 0 :(得分:0)

//buffer element since we use it multiple times
var $envoi_search = $("#envoi_search");

//bind a single click event handler to the element
$envoi_search.click(function () {

    //create a regular expression based on the value of a form input
    var myRegExp = new RegExp($("#champ").val(), "gi");

    $("#result").html('');

    $envoi_search.attr("disabled", "disabled");

    $.ajax({
        type     : "POST",
        url      : "http://www.edumobile.org/blog/uploads/XML-parsing-data/Data.xml",
        cache    : false,
        dataType : "xml",
        success  : function(data) {
            $(data).find("Book").each(function () {
                var temp = $(this).find("name").text();

                            //use `.search()` to test the regular expression against a string
                if (temp.toLowerCase().search(myRegExp) > -1) {

                                    //it's a waste to do multiple selections and appends in a row, instead just append everything at once
                    $("#result").append("<br> Titre : " + temp + "<br> Auteur : " + $(this).find("address").text() + "<br> Pays : " + $(this).find("country").text());
                    $envoi_search.attr("disabled", "");
                }
            });

        }
    });
});

我相信这就是你要找的东西。我删除了内部.click事件绑定,它基本上是在同一事件的事件处理程序中设置一个事件绑定,使得你必须单击两次才能使内部事件处理程序工作。

此外,如果您与www.edumobile.org不在同一个域中,则需要使用服务器端语言编写代理脚本,这样您就可以在没有跨域策略问题的情况下获取数据。

当您检查字符串中是否存在字符串时,您错过了.search()函数。

var myRegExp = new RegExp($("#champ").val(), "gi");

这将根据#champ输入的值创建正则表达式。 "gi"标志是:

g - &gt;全局(因为我们正在运行.search(),所以不是必需的,但这可能非常有用)

i - &gt;忽略大小写

ya的一些文档:

.search()https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/search RegExp()https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp `