0

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

<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>

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

4

1 回答 1

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-> 全局(不是真的必要,因为我们正在运行 a.search()但这可能非常有用)

i-> 忽略大小写

一些文件给你:

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

于 2012-05-09T21:37:42.833 回答