0

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

3 回答 3

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');
});
于 2012-10-16T10:41:54.917 回答
0

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

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

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

于 2012-10-16T10:39:08.317 回答
0

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

于 2012-10-16T10:42:48.940 回答