Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据使用输入字段的次数发生多个ajax请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 根据使用输入字段的次数发生多个ajax请求

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=

我有一个奇怪的bug,我正在从输入进行ajax加载。我意识到这可能是一个愚蠢的方法,但这是我发现的唯一让IE配合使用enter键的方法。然后,我有一个单独的问题,IE中的submit在哪里打开了一个新窗口,而不仅仅是使用Ajax GET。所以我完全抛弃了表单,我正在尝试用javascript做所有事情。。大概是这样的:

<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:我现在知道我犯了一个错误。我正要下班回家。我今晚会修好并更新代码