我有一个用户输入文本的文本框,当用户开始写时,该文本框会消失。但是当我使用下拉菜单时从中选择一个文字,&此文本自动输入文本框,指南文本不会消失。
我用来淡化指南文字的事件:
$('input, textarea').live('keydown', toggleLabel);
$('input, textarea').live('paste', toggleLabel);
更改下拉列表:
$('.ui-discussion-text').change(function () {
var oldText = $('.ui-discussion-input textarea').val();
$('.ui-discussion-input textarea').val(oldText + " " + $(this).val());
});
请帮忙。
答案 0 :(得分:0)
如果没有看到其余的代码,有点难以说,但是因为你正在动态地更改代码,所以没有会触发的事件(我认为改变可能,但是调查它并意识到它不会) 。由于您已经有了下拉列表的onchange事件,为什么不在那时调用toggleFunction?
http://jsfiddle.net/spacebean/SvNUw
$('.ui-discussion-text').change(function () {
var oldText = $('.ui-discussion-input textarea').val();
$('.ui-discussion-input textarea').val(oldText + " " + $(this).val());
toggleLabel();
});
或者,您可以在替换文本并为其设置侦听器后添加焦点:
http://jsfiddle.net/spacebean/SvNUw/2/
$('input, textarea').live('keydown paste focus', toggleLabel);
$('.ui-discussion-text').change(function () {
var oldText = $('.ui-discussion-input textarea').val();
$('.ui-discussion-input textarea').val(oldText + " " + $(this).val()).focus();
});
或者最后,您可以在复制文本后向元素添加触发器,例如: http://jsfiddle.net/spacebean/SvNUw/4/
$('input, textarea').live('keydown paste', toggleLabel);
$('.ui-discussion-text').change(function () {
var oldText = $('.ui-discussion-input textarea').val();
$('.ui-discussion-input textarea').val(oldText + " " + $(this).val()).trigger('paste');
});
而且,正如您所看到的,如果每个事件类型都触发相同的功能,则不需要单独的行。只需像上面那样用空格分隔它们。