2012-10-16 48 views
0

我想,當一個文本框的值由用戶改變插入值到數據庫中。我已經檢查了自己的後端代碼(C#),而jQuery和已確認這是工作,這使我相信,問題是,jQuery的.change()事件不會被解僱。jQuery的.change()可能不被解僱

我見過很多相同的問題,但沒有解決方案似乎有關。我怎樣才能得到這個工作?

的jQuery:

<script type="text/javascript"> 
    $(function() { 
     $('.qty').change(function() { 
      $.post('/InlineEditing.cshtml', { qty: $(this).val(), id: $(this).attr('id') }, 
       function (data) { 
        alert(data.trim()); 
       }); 
     }); 
    }); 
</script> 

HTML:

<input type="text" class="qty" id="1" value="0" /> 
+2

您是否想要發佈到你的服務器時,文本更改(即每個鍵輸入或粘貼事件的文本框等),或者當用戶按壓在文本框中輸入/標籤('.change()'火災發生這種情況時) – techfoobar

+1

.change()僅在文本框失去焦點後纔會觸發。這是你需要的還是你想讓它在你按下按鈕時觸發?在這種情況下,使用.keyup()代替 – gintas

+0

@techfoobar和gintas;我不知道.change()只有在元素失去焦點時纔會觸發(我是jQuery的新手) - * *然而,我也嘗試點擊遠離輸入元素,以防萬一它是如何工作的,仍然沒有被解僱。 – Arrow

回答

1

如果要可靠地處理文本的變化,使用zurb的框TextChanged事件來代替。這適用於鍵盤輸入,粘貼操作,剪切操作等

http://www.zurb.com/playground/jquery-text-change-custom-event

入住此演示:http://jsfiddle.net/JnCXG/

代碼:

$('#foo').bind('textchange', function (event, previousText) { 
    console.log('Text changed'); 
}); 
+0

好哇!沒有意識到這個lib。 – jsalonen

+1

也請查看演示。 – techfoobar

+0

謝謝。這很好。 – Arrow

0

我覺得有幾個方面對這個問題:

  • 如果要更新服務器狀態上的每個按鍵你可以改爲收聽keypress事件。
  • 另外請注意,你可能應該指向你的HTTP命令到接受POST 命令,而不是經過渲染的HTML的URL。
  • alert是在調試腳本會發生什麼可怕的不足。考慮使用像Firebug這樣的JavaScript調試器來找出真正發送到服務器的內容。

舉一個例子,看到這個小提琴:http://jsfiddle.net/dfH7y/3/(你需要打開JavaScript控制檯看到console.log輸出)

0

您可以在Keyup寫功能或onblur事件而不是更改。更改事件適用於選擇框。