2012-05-09 49 views
0

我想檢查是否包含我輸入的文本中包含一個子whih是一個變量: 這裏是我的代碼:檢查如果輸入的文本包含一個子jQuery的移動

<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

您在另一個點擊事件中點擊了一下。 – Huangism

+0

也是這行temp.toLowerCase()。contenu temp是一個字符串,然後你得到了一個。然後contenu這是另一個字符串。據我所知應該給出一個語法錯誤 – Huangism

回答

1
//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", ""); 
       } 
      }); 

     } 
    }); 
}); 

我相信這就是你要找的。我刪除了內部事件綁定,它基本上是在同一事件的事件處理程序中設置一個事件綁定,使其必須單擊兩次才能使內部事件處理程序工作。

此外,如果您與www.edumobile.org不在同一個域中,則需要使用服務器端語言編寫代理腳本,以便在沒有跨域策略問題的情況下獲取數據。

當您檢查字符串中是否存在字符串時,您錯過了.search()函數。

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

這會根據#champ輸入的值創建正則表達式。該"gi"標誌是:

g - >全局的(不是真的有必要,因爲我們正在運行一個.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 `

+0

謝謝@Jasper !!這是非常有用的,這正是我需要的:-) – Copernic

相關問題