我在Confluence页面中使用以下jQuery来获取用户输入和一些自动建议的链接,并将它们POST到外部页面中的表单。但是,用户输入结果是最后一个字符被截断。无论长度如何,它都会丢掉最后一封信。
例如,如果用户键入foobar
,则POST发送fooba
。如果用户输入foobar foobar foobar
,则会变为foobar foobar fooba
,依此类推。
重要的代码如下:
$( document ).ready(function() {
$('form.aui').on('keypress', showHead);
function showHead() {
$('.suggestHead').delay(500).fadeIn(300);
$('.alertReq, .asterisk').css('visibility', 'hidden');
var dropdownText = ($( "div.searchContainer2 a.content-type-page span" ).text());
$('#capture').val( dropdownText );
var inputvalue = $("#input2").val( );
$('#describe' ).val( inputvalue );
};
});
只有#describe
值才是问题所在。
有一个内置的Confluence字段,我给出了" #input2"的ID,当用户输入它时,上面的jQuery将用户输入分配给一个名为{{的变量1}},然后将该变量分配给我使用ID"#describe"创建的隐藏表单字段。 (这样我就可以在表单上使用POST,并且出于其他原因)。
如果我设置提醒以查看inputvalue
中的内容,请执行以下操作:
#describe
警报包含用户输入//Alert function to test selectors
$(document).on('click','.searchHeading2',function(){
alert ($("#describe").val());
});
但删除了最后一个字母的内容。这也是我提交的页面上最终形式的内容。任何人都知道为什么会这样做?
#input2
。这是jQuery的Confluence约定,您必须将AJS.$
替换为$
,并将AJS.$
替换为$( document ).ready(function() {
。我想在这里只使用常规jQuery,这样就不会让人感到困惑。应该是现在。
答案 0 :(得分:0)
A. Wolff在评论中回答:
使用keyup事件