为什么jQuery正在删除文本的最后一个字符

Why is jQuery deleting last character of text?

本文关键字:最后一个 字符 文本 删除 jQuery 为什么      更新时间:2023-09-26

我有以下jQuery在Confluence页面中工作,以获取用户输入和一些自动建议的链接,并将它们发布到外部页面中的表单中。然而,用户输入的最后一个字符被截断了。不管长度是多少,它都与最后一个字母不一致。

例如,如果用户键入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字段,我给它一个ID"#input2",当用户在其中键入时,上面的jQuery会将用户输入分配给一个名为inputvalue的变量,然后将该变量分配给我创建的一个ID为"#description"的隐藏表单字段。(这是为了我可以在表单上使用POST,还有其他原因)。

如果我设置一个警报来查看#describe中的内容,如下图所示:

//Alert function to test selectors
  $(document).on('click','.searchHeading2',function(){
     alert ($("#describe").val());
});

该警报包含用户在#input2中键入的内容,但删除了最后一个字母。这也是我提交到的页面上的表格中的内容。有人知道它为什么会这样做吗?

编辑:对不起,我编辑是为了修复我在两个地方留下的AJS.$。这就是jQuery的Confluence约定,必须用AJS.$替换$,用AJS.toInit(function() {替换$( document ).ready(function() {。我想在这里把它变成普通的jQuery,这样就不会混淆了。应该是现在。

A.Wolff在评论中回答:

使用keyup事件代替