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

时间:2015-03-20 19:41:15

标签: javascript jquery forms

我在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,这样就不会让人感到困惑。应该是现在。

1 个答案:

答案 0 :(得分:0)

A. Wolff在评论中回答:

使用keyup事件