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

Guide Text Not working when text is entered using another control

本文关键字:文本 输入 控件 不起作用 其他      更新时间:2023-09-26

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

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

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

请帮忙。

如果不看到代码的其余部分,很难说,但是由于您正在动态更改代码,因此不会触发事件(我认为更改可能会,但查看它并意识到它不会)。既然你已经有一个下拉列表的 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');
});

而且,如您所见,如果每种事件类型都触发相同的函数,则不需要为它们单独行。只需添加它们,如上所示,用空格分隔。