我正在尝试检查输入文本的包含是否包含子字符串,它是一个变量: 这是我的代码:
<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>
我不知道为什么它不起作用。你对我的问题有任何想法吗? 谢谢:))
答案 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
`