简体   繁体   English

复制粘贴文本区域行限制 jquery

[英]Copy paste text area lines limitation jquery

I have created a textarea where user will put their comments comment will be divided by every new line 1 comment per line I want to place a validation that comment cannot be exceeded the provided limit while typing the validation works properly but when it comes to pasting all comments the validation fails it works with keydown but does not work with paste.我创建了一个文本区域,用户将在其中放置他们的评论 评论将除以每行 1 条评论 每行我想进行验证,即在键入验证时评论不能超过提供的限制 验证工作正常,但在粘贴所有内容时评论 验证失败 它适用于 keydown 但不适用于粘贴。 No matter hwo lines user paste it counts 1 only I want to verify if required comments are 5 and 7 lines are pasted by user it should leave 5 lines and cut the rest of them无论用户粘贴 hwo 行,它只计为 1 我想验证所需的评论是否为 5 行,用户粘贴了 7 行它应该留下 5 行并剪切其余的行

here is the below code这是下面的代码

 $('#custom_comments').keydown(function(e) { var lines = Number($('#comments_required').val()); var linesUsed = $('#comments_count'); var newLines = $(this).val().split("\\n").length; var checkError = $('input[name=error_com]').val(); linesUsed.text(newLines); if(e.keyCode == 13 && newLines >= lines) { linesUsed.css('color', 'red'); return false; } else { linesUsed.css('color', ''); if( checkError == 'error' ) { $('.single_add_to_cart_button').addClass('disabled'); } else { $('.single_add_to_cart_button').removeClass('disabled'); } } }); $('#custom_comments').on('paste change', function(e) { var lines = Number($('#comments_required').val()); var linesUsed = $('#comments_count'); var newLines = $(this).val().split("\\n").length; var checkError = $('input[name=error_com]').val(); console.log(newLines); linesUsed.text(newLines); if(newLines >= lines) { linesUsed.css('color', 'red'); return false; } else { linesUsed.css('color', ''); if( checkError == 'error' ) { $('.single_add_to_cart_button').addClass('disabled'); } else { $('.single_add_to_cart_button').removeClass('disabled'); } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea name="_custom_comment" class="input-box textarea-box" id="custom_comments"></textarea> <div class="comments-box"> <input type="hidden" name="comments_required" id="comments_required" value="5"> <div class="count-box"><p>Comments used: <span id="comments_count">0</span></p></div> </div> <input type="hidden" name="error_com" value="error"> <button type="submit" class="single_add_to_cart_button button alt disabled wc-variation-selection-needed">In den Warenkorb</button>

try using e.originalEvent.clipboardData.getData('text/plain') to get the data from clipboard object.尝试使用e.originalEvent.clipboardData.getData('text/plain')从剪贴板对象中获取数据。 check snippet for code restricting the user to put more than 5 lines and truncating rest of the lines.检查代码片段以限制用户放置超过 5 行并截断其余行。

 $('#custom_comments').keydown(function(e) { var lines = Number($('#comments_required').val()); var linesUsed = $('#comments_count'); var newLines = $(this).val().split("\\n").length; var checkError = $('input[name=error_com]').val(); linesUsed.text(newLines); if (e.keyCode == 13 && newLines >= lines) { linesUsed.css('color', 'red'); return false; } else { linesUsed.css('color', ''); if (checkError == 'error') { $('.single_add_to_cart_button').addClass('disabled'); } else { $('.single_add_to_cart_button').removeClass('disabled'); } } }); $('#custom_comments').on('change', function(e) { var lines = Number($('#comments_required').val()); var linesUsed = $('#comments_count'); var newLines = $(this).val().split("\\n").length; var checkError = $('input[name=error_com]').val(); console.log(newLines); linesUsed.text(newLines); if (newLines >= lines) { linesUsed.css('color', 'red'); return false; } else { linesUsed.css('color', ''); if (checkError == 'error') { $('.single_add_to_cart_button').addClass('disabled'); } else { $('.single_add_to_cart_button').removeClass('disabled'); } } }); $('#custom_comments').on('paste', function(e) { var lines = Number($('#comments_required').val()); var linesUsed = $('#comments_count'); var clipboardData, pastedData; // Stop data actually being pasted into div e.stopPropagation(); e.preventDefault(); // Get pasted data via clipboard API clipboardData = e.originalEvent.clipboardData || window.clipboardData; pastedData = clipboardData.getData('Text'); var pastedLines = getNumberOfLines(pastedData); var checkError = $('input[name=error_com]').val(); linesUsed.text(pastedLines); if (pastedLines >= lines) { debugger; $(this).val(pastedData .split(/\\r\\n/) .slice(0, 5) .join("\\n")); linesUsed.css('color', 'red'); linesUsed.text(5); return false; } else { linesUsed.css('color', ''); if (checkError == 'error') { $('.single_add_to_cart_button').addClass('disabled'); } else { $('.single_add_to_cart_button').removeClass('disabled'); } } }); function getNumberOfLines(str) { if (str) { return str.split(/\\r\\n|\\r|\\n/).length; } return 1; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea name="_custom_comment" class="input-box textarea-box" id="custom_comments"></textarea> <div class="comments-box"> <input type="hidden" name="comments_required" id="comments_required" value="5"> <div class="count-box"> <p>Comments used: <span id="comments_count">0</span></p> </div> </div> <input type="hidden" name="error_com" value="error"> <button type="submit" class="single_add_to_cart_button button alt disabled wc-variation-selection-needed">In den Warenkorb</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM