0

我有一个文本框,用于由用户输入文本,当用户开始写作时,该指南文本会消失。但是当我使用下拉菜单并从中选择一个文本时,该文本会自动输入到文本框中,引导文本不会消失。

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

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

请帮忙。

4

1 回答 1

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

});

而且,如您所见,如果每个事件类型都触发相同的函数,则不需要为每个事件类型单独设置一行。只需像上面那样将它们用空格分隔即可。

于 2013-10-21T13:31:05.630 回答