【发布时间】:2021-12-30 11:47:14
【问题描述】:
我有以下脚本,其功能应该是从一个输入中检索前 5 个单词并在第二个输入中键入它们,但它没有按预期工作。
$('#review_content').on('keyup change paste click input', function () {
var contentVal = $('#review_content').val();
var contentValSplit = $('#review_content').val().split(' ');
var headerValSplit = $('#review_header').val().split(' ');
if(headerValSplit.length < 6) {
if(contentValSplit.length > 6) {
var $five = contentValSplit[0] + ' ' + contentValSplit[1] + ' ' + contentValSplit[2] + ' ' + contentValSplit[3] + ' ' + contentValSplit[4];
$('#review_header').val($five + "...");
} else {
$('#review_header').val(contentVal + "...");
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input id="review_content">
<input id="review_header">
当我粘贴较长的文本(超过 5 个字)时,脚本只是在第二个输入中粘贴相同的文本,但这不是它应该如何工作的。它应该只从整个文本中获取前 5 个单词,并仅将它们粘贴到第二个输入中。或者如果文本小于5个单词,它应该在第二个输入中同步输入第一个输入的字母,并在完成第五个单词后停止。任何想法如何做到这一点?
【问题讨论】:
-
拥有
headerValSplit.length < 6的原因是什么,以及当你真的不希望它大于5 时,为什么要拥有contentValSplit.length > 6? -
contentValSplit.length > 6背后的逻辑是捕捉是否实际粘贴了文本 -
这段代码中的逻辑如下:
if the header of the review is smaller than 6 words(然后才执行任何代码)=>then if the length of the content of the review (in words) is greater than 6=>get the first 5 words only and paste them in the headerELSE=>continue pasting text in the header collected from the content untill it doesn't reach 6 words。 -
是的,这就是用英文输入代码的作用,但这不是我的问题。无论如何,我看到你已经接受了一个答案,所以我会保留它。
标签: javascript jquery