指南文本使用其他控件输入文本时不起作用

时间:2013-10-21 09:31:38

标签: javascript jquery html

我有一个用户输入文本的文本框,当用户开始写时,该文本框会消失。但是当我使用下拉菜单时从中选择一个文字,&此文本自动输入文本框,指南文本不会消失。

我用来淡化指南文字的事件:

$('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());
});

请帮忙。

1 个答案:

答案 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');

});

而且,正如您所看到的,如果每个事件类型都触发相同的功能,则不需要单独的行。只需像上面那样用空格分隔它们。