Aas*_*zam -7 html php forms jquery
说我复制
1 2 3 4
Run Code Online (Sandbox Code Playgroud)
然后选择一个输入字段,当我粘贴它时,它会自动将 1 放入第一个字段,将 2 放入第二个字段,将 3 放入第三个等等。
复制的值将由空格、逗号或制表符分隔。
表单是简单的 html,我使用 PHP 插入数据库,无论解决方案是什么语言都可以。我会想象它的 jQUery,如果它存在,甚至会将我引导到相关的 jQuery 插件。
我已经逐行注释了代码,希望这已经足够了。我必须去上班,一到那里我就会做任何澄清的编辑。
$(function(){
//run this on dom ready
$('.paste-me').on('paste', function(e){
//add the paste event to all of the paste-me classes
var data1 = e.originalEvent.clipboardData.items[0];
//get the data transfer item of hte original clipboard data event.
if(data1.kind == 'string' && data1.type=='text/plain'){
//If it is a string and text/plain, move forward
e.stopPropagation();
//Stop the propagtion of this event
data1.getAsString(function(s){
//get the string contents of the clipboard item.
s = s.split('\t');
//split it by spaces
$('.paste-me').each(function(i,item){
//loop through each .paste-me item
$(item).val( s[i] || '');
//set the value from the split array, or an empty string if someone copy/pastes something too small to put a value in each item
});
});
}
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>Run Code Online (Sandbox Code Playgroud)
由于 jQuery 已基本停止使用,转而使用 Angular、Vue 或 React 等框架,我觉得这个答案需要一些更新。
下面是一个 100% Vanilla JS 版本,它将与给定的 HTML 一起使用。从逻辑上讲,它遵循与上述相同的步骤,我只是重命名了一些变量以提高可读性。如果你有问题,就问吧。
document.addEventListener('DOMContentLoaded', () => {
const pasteMes = document.querySelectorAll('.paste-me');
pasteMes.forEach(input => {
input.addEventListener('paste', e => {
const data = e.clipboardData.items[0];
if(data.kind == 'string' && data.type == 'text/plain') {
data.getAsString(str => {
str.split(/\s/).forEach((v, ind) => {
pasteMes[ind] && (pasteMes[ind].value = v || '');
})
});
}
});
});
});Run Code Online (Sandbox Code Playgroud)
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>
<input class="paste-me" name="paste_me[]" type="text"/>Run Code Online (Sandbox Code Playgroud)