jQuery .change()可能无法触发

时间:2012-10-16 10:33:21

标签: jquery asp.net onchange

我试图在用户更改文本框的值时将值插入数据库。我已经检查了后端代码(C#),没有jQuery,并确认它正在工作,这让我相信问题是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" />

3 个答案:

答案 0 :(得分: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');
});

答案 1 :(得分:0)

我认为这个问题有几个方面:

  • 如果您想在每次按键时更新服务器状态,您可以改为收听keypress事件。
  • 另请注意,您可能应将HTTP命令指向接受POST的URL 命令,而不是渲染的HTML。
  • alert非常不足以调试脚本中发生的事情。考虑使用像Firebug这样的JavaScript调试器来找出真正发送到服务器的内容。

例如,请看这个小提琴:http://jsfiddle.net/dfH7y/3/(您需要打开JavaScript控制台才能看到console.log输出)

答案 2 :(得分:0)

您可以在Keyuponblur事件上编写函数而不是更改。更改事件适用于选择框。