Javascript 根据使用输入字段的次数发生多个ajax请求
我有一个奇怪的bug,我正在从输入进行ajax加载。我意识到这可能是一个愚蠢的方法,但这是我发现的唯一让IE配合使用enter键的方法。然后,我有一个单独的问题,IE中的submit在哪里打开了一个新窗口,而不仅仅是使用Ajax GET。所以我完全抛弃了表单,我正在尝试用javascript做所有事情。。大概是这样的:Javascript 根据使用输入字段的次数发生多个ajax请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个奇怪的bug,我正在从输入进行ajax加载。我意识到这可能是一个愚蠢的方法,但这是我发现的唯一让IE配合使用enter键的方法。然后,我有一个单独的问题,IE中的submit在哪里打开了一个新窗口,而不仅仅是使用Ajax GET。所以我完全抛弃了表单,我正在尝试用javascript做所有事情。。大概是这样的: <input class="myInput" type="text"></input> <img src="submitbutton" class=
<input class="myInput" type="text"></input>
<img src="submitbutton" class="submitIt" />
这很好用
当用户点击回车键时:
$('.myInput').keydown(function(e){
if (e.keyCode == 13) {
ajaxFunction();
return false;
}
哪个有效。。第一个条目。但是如果你输入第二个数字,它会发出两次ajax请求,第三个数字=现在,对同一个地方同时发出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;
}
}
很抱歉,我没有可访问的实时代码,这将需要我一段时间来设置一个,但如果这是需要发生的,我会这样做
我有一个奇怪的bug,我正在从输入进行ajax加载。我意识到这可能是一个愚蠢的方法,但这是我发现的唯一让IE配合使用enter键的方法
可能是您正在使用的IE版本。但是点击回车键会触发这里的提交
然后,我有一个单独的问题,IE中的submit在哪里打开了一个新窗口,而不仅仅是使用Ajax GET。所以我完全抛弃了表单,我正在尝试用javascript做所有事情。。大概是这样的:
<input class="myInput" type="text"></input>
<img src="submitbutton" class="submitIt" />
你真的需要找出为什么会发生这种情况,而不是试图写黑客。这是游戏的一部分,也是学习过程的一部分,也是实现这一目标的方法
为什么不使用.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;
});
});
$(函数(){
//使用此选项,而不是单击提交或按enter键
$('form')。提交(函数(){
//获取输入的字符计数
var char_count=$('input[name=“myInput”]”,this.val();
//验证它
如果(字符数!=9){
//仍然需要初始化y、n和valInput
y、 隐藏();
n、 show();
//注意这可能会给出负数
//如果要显示错误,这将非常小心。比使用大量ifs要好得多:)
text('您需要'+parseInt(9字符计数,0)+'更多字符');
返回false;
}
//如果您仍然希望使用AJAX提交表单,但实际上并不需要,则可以取消注释。
//ajaxFunction();
//返回false;
});
});
谢谢PeeHaa。。我会处理这个。我没有使用ajax,只是因为我不想处理表单,但这是必需的,因为输入所做的是将值作为数据传递给rest,然后解析返回的json。@Zac:没问题,只要取消注释这些行:),如果您需要更多帮助(例如,修复您遇到的那些IE问题)让我知道。嗨,佩哈,再次谢谢。。我需要回到状态,现在它工作得很好。你的剧本很有说服力,我很想让它发挥作用,但超过第一位数就不行了。然后一切都是负面的。我想把它放在小提琴里再玩一会儿。。可能最后会提出一个新的SO问题。@Zac:我现在知道我犯了一个错误。我正要下班回家。我今晚会修好并更新代码