2013-04-25 34 views
0

我有一個JSON文件,我使用jQuery。使用HTML輸入輸入搜索JSON對象

我想知道如何搜索項目,只獲取與HTML輸入相關的項目。

這是我的嘗試:

function Search(form) { 

     $(".products").empty(); 
     $.getJSON('products.json', function(data) { 
      $(data.Products).each(function(index, item) { 
       if(form == item.Name) { 

        var input = document.getElementById('searchForm'); 

        $('<div/>', {'class':'productname'}).text(item.Name).append(
          $('<div/>', {'class':'productdetails', text:'Album: '+item.Album}), 
          $('<div/>', {'class':'productdetails'}).append($('<img>').attr({src:item.Source,title:item.Name,alt:item.Name,class:'productimage'})), 
          $('<div/>', {'class':'productdetails', text:'Genre: '+item.Genre}), 
          $('<div/>', {'class':'productdetails', text:'Price: '+item.Price}), 
          $('<div/>', {'class':'productdetails', text:'Quantity: '+item.Quantity}), 
          $('<div/>', {'class':'productdetails', text:'Tracks: '+item.Tracks}), 
          $('<div/>').append(
            $('<button />', {'class':'productbutton'}) 
              .text('Add To Cart.') 
              .click(function(){ 
               $.fn.SaveToCart(i,item.Name, item.Album, item.Price); 
              }) 
          ) 
        ).appendTo(".products"); 
       } else if (form == item.Album) { 

        var input = document.getElementById('searchForm'); 

        $('<div/>', {'class':'productname'}).text(item.Name).append(
          $('<div/>', {'class':'productdetails', text:'Album: '+item.Album}), 
          $('<div/>', {'class':'productdetails'}).append($('<img>').attr({src:item.Source,title:item.Name,alt:item.Name,class:'productimage'})), 
          $('<div/>', {'class':'productdetails', text:'Genre: '+item.Genre}), 
          $('<div/>', {'class':'productdetails', text:'Price: '+item.Price}), 
          $('<div/>', {'class':'productdetails', text:'Quantity: '+item.Quantity}), 
          $('<div/>', {'class':'productdetails', text:'Tracks: '+item.Tracks}), 
          $('<div/>').append(
            $('<button />', {'class':'productbutton'}) 
              .text('Add To Cart.') 
              .click(function(){ 
               $.fn.SaveToCart(i,item.Name, item.Album, item.Price); 
              }) 
          ) 
        ).appendTo(".products"); 



       } 
      }); 
     }); 
    }; 

    $(document).ready(function() { 
     $('#searchForm').submit(function(e) { 
      e.preventDefault(); 
      Search(this); 
     }); 
    }); 

HTML:

<form name="searchForm" id="searchForm" > 
<input name="productname" id="productname" type="text"> 
<input type="submit" value="Search"> 
</form> 

嘗試這個代碼只刷新頁面。

關於如何修復它的任何想法?

+1

你不妨礙默認的表單提交行爲 – 2013-04-25 11:50:26

+0

也許你可以使用這個? http://stackoverflow.com/questions/11727316/whats-the-best-way-to-parse-a-json-string/11728751#11728751 – 2013-04-25 11:53:42

+0

@TimVermaelen嗨,我已經有一個'類別'功能的工作。我需要的是根據搜索框中的用戶輸入來查看JSON數據。 – JustAJDoe 2013-04-25 12:47:31

回答

1

您需要防止提交表單。您可以只在Search()功能的最底部添加return false;(最後};前),或刪除內聯onsubmit和使用jQuery附加submit處理程序的形式,這將允許您使用preventDefault()

$(document).ready(function() { 
    $('#searchForm').submit(function(e) { 
    e.preventDefault(); 
    Search(this); 
    }); 
}); 

此外,你必須在下面一行拼寫錯誤:

var input = document.getElementById('searhForm');

應該

var input = document.getElementById('searchForm');

+0

嗨,關於你提交的代碼,我把它放在哪裏? – JustAJDoe 2013-04-25 12:45:04

+0

(我加了'return false;'並修正了拼寫錯誤,但是沒有任何反應。) – JustAJDoe 2013-04-25 12:45:51

+0

''裏面標籤 – billyonecan 2013-04-25 12:46:36