2013-10-10 62 views
1

有這種簡單的形式,它發送get-request到服務器。設置值爲隱藏字段使用jquery在自動完成期間不工作

<form id="form0" method="get"> 
    <input id="searchTerm" type="hidden" name="searchTerm"> 
    <input type="search" id="userSearchTerm" /> 
    <input type="submit" value="submit" /> 
</form> 

而且使用jQuery UI的auto-complete到從服務器獲取JSON數據,是的,它工作正常。

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#userSearchTerm").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: "/Home/AutoComplete", 
       type: "POST", 
       dataType: "json", 
       data: { term: request.term }, 
       success: function (data) { 
        alert("successfully got the data"); 
        response($.map(data, function (item) { 
         return { name: item.name, value: item.age }; 
        })) 

       } 
      }) 
     }, 
     select: function (e, ui) { 
      alert(ui.item.name); 
      $('#searchTerm').val(ui.item.name); 
      $("#form0").submit(); 
     } 


    }); 
    return false; 
}) 

我得到像警報消息「順利拿到了數據」還有「項目名稱」。還檢查谷歌瀏覽器下的Network標籤 - > json響應在那裏。

問題是,我無法提交表單。如果我刪除線,$('#searchTerm').val(ui.item.name);表單正在提交,一切都很好。

任何一個人都可以指向正確的方向嗎?爲什麼不是這個簡單的JavaScript沒有運行?

+0

您的sort2在哪裏定義?還是從哪裏來? –

+0

@Jatinpatil:謝謝你指出。這是一個錯字。但是,仍然是同樣的錯誤。 –

+0

它看起來像evrything很好。你能用樣本json創建[fiddle](http://jsfiddle.net)嗎? – Unknown

回答

1

試試這個:

$("#tags").autocomplete({ 
     source: availableTags, 
     select: function (e, ui) { 
       alert(ui.item.value); 
       $("#searchTerm").val(ui.item.value); 
       $("#form0").submit(); 
      } 
    }); 

DEMO FIDDLE

2

嘗試更換ui.item.nameui.item.value一樣,

select: function (e, ui) { 
    alert(ui.item.value); 
    $('#searchTerm').val(ui.item.value); 
    $("#form0").submit(); 
} 

Fiddle

0

感謝@Unknown,@Rohan,@Mike,@Jatin誰指出我在正確的方向和他們把jfiddle努力。

所以,一對夫婦的事情,我吸取了教訓:時間來回答"Why it did not work?"

那麼,答案是:

"hidden"類型的輸入字段ID = SEARCHTERM我試圖在表單提交之前爲其設置值。

我用過類似,

$("#searchTerm").value("TEST"); 

看來,瀏覽器是不開心,告訴我說,Object [object Object] has no method 'value'

因此,正確的方法將值設置爲隱藏字段使用jquery一種形式就是使用這樣的:

$('input[name=searchTerm]').val(ui.item.name); 

,第二部分:

我的JSON對象是類型,name and value pairs。所以,一般我應該使用,

$('input[name=searchTerm]').val(ui.item.name); or $('input[name=searchTerm]').val(ui.item.value); 

並不僅僅是$('input[name=searchTerm]').val(ui.item); //This is not sensible.

其他注意事項:

您可以按F12調出開發者工具(這一點,如果螢火蟲是不會推出安裝)。

導航到Console tab它給你帶來各種腳本錯誤。

導航到Network tab它帶給你所有的JSON請求。

相關問題