我有一个简单的问题(希望如此),但我无法找到明确的解决方案。
我有一个数据表,它有一个文本输入字段。用户在文本字段中输入文本,然后按Enter键。这会自动从输入的文本中过滤。
我希望使用onkeyup事件来触发,因此当用户在文本字段中输入值时,数据表会自动更新,而不是用户必须按Enter键。
<input type="text" name="input" class="filter" id="input" onkeyup="functionName(this)" value="">
<script>
function functionName(e) {
alert(e.value);
}
</script>
此代码有效,因此当我输入一个值时,会弹出一个警告,显示输入的值。
是否可以更改提醒,提交或复制“输入”键的内容。
从尝试寻找解决方案来看,它更难,因为它不是表单,因为它使用ajax,因此.submit方法不起作用。
我也希望像这样的解决方案能够起作用
<script>
var e = jQuery.Event("keyup");
e.which = 13; // Enter
$("#input").trigger(e);
</script>
我知道有许多类似的主题,我看过,但似乎没有一个对我来说是正确的解决方案。 谢谢你的帮助。
//
修改
//
根据键盘问题,如何在过滤后重新聚焦光标。这是在过滤的同时完成的吗?
$obj.find('input.filter').on('keyup',function(e){
e.preventDefault();
ajax($obj);
});
答案 0 :(得分:1)
你正在使用jQuery,所以没有必要使用onclick=""
,其次尽量避免使用ID和&amp;的保留名称。课程(例如#input
)。最后,您可以使用$.post()
对每个.keyup
事件模仿表单提交,如下所示:
<input type="text" name="input" class="filter" id="searchinput" value="" />
<script>
$(document).ready(function() {
$(document).on('keyup', '.filter', function( event ) {
$.post( 'yourapi.php', { input: $(this).val() }, function( data ) {
//Refocus the <input />
$('#searchinput').focus();
});
});
});
</script>
答案 1 :(得分:0)
$(document).ready(function(){
$("input").keyup(function(event)
{
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode != '13')
{
var e = jQuery.Event("keyup");
e.which = 13; // Enter
$("input").trigger(e);
}
else {alert("Enter triggered");
}
});
});
DEMO JSFiddle
答案 2 :(得分:0)
因为你也可以在jquery中编码。然后你可以使用这段代码......
$(document).ready(function(){
$(".filter").keyup(function(){
var text_input_text = $(this).val();
//here is your ajax post request
$.post('url for post', {filter_text: text_input_text}, function(response){
console.log(response);
});
});
});
这里我们介绍了keyup事件和ajax帖子。 希望这会对你有所帮助。