我有一个奇怪的错误,我正在从输入执行ajax加载。我意识到这可能是一种愚蠢的方式,但这是我发现让IE配合使用回车键的唯一方法。然后我有一个单独的问题,IE中的提交继续打开一个新窗口,而不是只使用Ajax GET。所以..我完全抛弃了表格,我正在尝试用javascript做所有事情......这样的事情:
<input class="myInput" type="text"></input>
<img src="submitbutton" class="submitIt" />
我正在启动ajax函数:
$('.submitbutton').click{function() { ajaxFunction(); });
工作正常。
以及当用户点击输入时:
$('.myInput').keydown(function(e){
if (e.keyCode == 13) {
ajaxFunction();
return false;
}
适用于第一个条目。但是,如果你输入第二个数字,它会使ajax请求2次,第三个数字=现在同时发生3个ajax请求到同一个地方,无限期...
我很确定问题是我设置验证的古怪方式。 keydown函数在这样的else {}语句中,并且在输入中恰好有9个数字之后才会起作用..这里是其中的一部分:
if ( len !== 9 )
{
if ( len == 1 )
{ y.hide(); n.show(); valInput.text("You need 8 more numbers");
}
else
{
if ( len == 2 )
{ y.hide(); n.show(); valInput.text("You need 7 more numbers");
}
...
}
else {
$('.myInput').keydown(function(e){
if (e.keyCode == 13) {
ajaxFunction();
return false;
}
}
抱歉,我没有可访问的实时代码,我需要一段时间来设置一个,但如果需要的话,我会这样做。
答案 0 :(得分:0)
我有一个奇怪的错误,我正在从输入执行ajax加载。我意识到这可能是一种愚蠢的方式,但这是我发现让IE配合使用回车键的唯一方法
可能是您正在使用的IE版本。但点击回车键会触发提交。
然后我有一个单独的问题,IE中的提交继续打开一个新窗口,而不是仅仅使用Ajax GET。所以..我完全抛弃了表格,我正在尝试用javascript做所有事情......这样的事情:
你真的需要找出为什么会这样,而不是试图写黑客。它既是游戏的一部分,也是学习过程的一部分,也是实现它的方式。
为什么不使用.submit()
和'普通'提交按钮,如:
<form action="#">
<input type="text" name="myInput">
<input type="image" src="submitbutton" class="submitIt">
</form>
$(function() {
// use this instead of clicking on submit or enter key pressed
$('form').submit(function() {
// get character count of input
var char_count = $('input[name="myInput"]', this).val();
// validate it
if (char_count != 9) {
// still need to initialize y, n and valInput
y.hide();
n.show();
// watch out this may give negative numbers
// this will take care if the error to be displayed. way better than using lots of ifs :)
valInput.text('You need '+parseInt(9-char_count, 0)+' more characters');
return false;
}
// can be uncommented if you still want to use AJAX to submit your form, but really it is not needed.
//ajaxFunction();
//return false;
});
});