我已经创建了一个代码在这里的keyup()函数
$(document).ready(function() {
var scntDiv = $('#add_words');
var wordscount = 1;
$(document).keyup(function(e) {
var key = (e.keyCode ? e.keyCode : e.which);
if (key === 32) {
wordscount++;
$('.input1').append('<p>stop touching your keyboard</p>');
$('<div class="line">Word ' + wordscount + '<input type="text" class="input' + wordscount + '" value="' + wordscount + '" /><a class="remScnt">Remove</a></div>').appendTo(scntDiv);
i++
return false;
}
});
});
<div id="add_words">
<div class="line">Word 1<input class="input1" type="text" value="1" /></div>
</div>
工作正常,但每当我按空格键添加新的输入字段。 问题是我无法用空格键入长单词(来自很多输入字段)
例如: - 当键入&#34;我的你好世界&#34;显示两个输入字段。实际上我需要一个额外的字段。
我的问题是,是否有任何选项keyup()
功能仅在第一次在同一个字段中工作
如果你知道可以帮助我吗
答案 0 :(得分:5)
首次使用后,您可以使用一种方法自动取消绑定事件:
$("#foo").one("keyup", function() {
alert("This will be displayed only once.");
});
答案 1 :(得分:3)
您可以使用 jQuery .one()
$('#myinput').one('keyup',function(){
// do something
});
答案 2 :(得分:2)
我不确定你到底想要什么,但试试这个......
使用HTML5 data.*
了解之前使用过该空间的用户。
$(document).ready(function() {
var scntDiv = $('#add_words');
var wordscount = 1;
$(document).keyup(function(e) {
var key = (e.keyCode ? e.keyCode : e.which);
if (key === 32 && $(e.target).data('added')) { // <=== Here
$(e.target).data('added', 'added'); // <=== And Here
wordscount++;
$('.input1').append('<p>stop touching your keyboard</p>');
$('<div class="line">Word ' + wordscount + '<input type="text" class="input' + wordscount + '" value="' + wordscount + '" /><a class="remScnt">Remove</a></div>').appendTo(scntDiv);
i++
return false;
}
});
});
答案 3 :(得分:2)
我认为这就是你搜索的内容
$(document).ready(function() {
var scntDiv = $('#add_words');
var wordscount = 1;
$("#add_words").on("keyup","input[type='text']",function(e) { // Set the eventhandler to the inputs
var key = (e.keyCode ? e.keyCode : e.which);
if (key === 32) {
if($(this).attr("data-isused")!="true"){ // Check if THIS textbox have append a new textbox?
$(this).attr("data-isused","true"); // Mark that this textbox has append a new one
wordscount++;
$('.input1').append('<p>stop touching your keyboard</p>');
$('<div class="line">Word ' + wordscount + '<input type="text" class="input' + wordscount + '" value="' + wordscount + '" /><a class="remScnt">Remove</a> </div>').appendTo(scntDiv);
//i++ Ignore this, couse its not declared
return false;
}
}
});
});
的jsfiddle: http://jsfiddle.net/pURVS/
答案 4 :(得分:1)
不,但您可以将类添加到目标输入字段并测试它是否已经在此处,然后不执行任何操作
答案 5 :(得分:1)
您应该使用bind和unbind方法:
http://api.jquery.com/bind/ http://api.jquery.com/unbind/
例如:
var handler = function() {
alert('The quick brown fox jumps over the lazy dog.');
// unbind handler so the function is not executed again
$('#foo').unbind('click', handler);
};
$('#foo').bind('click', handler);
在你的处理函数中,如果你不再希望它被执行(在第一次按键之后),你可以调用unbind方法。