2011-11-08 6 views
0

入力からajaxロードを実行する際に奇妙なバグがあります。私はこれが愚かな方法かもしれないことに気付きましたが、IEをEnterキーを使用して連携させるための唯一の方法でした。私はその後、Ajax GETを使用するのではなく、IEでの送信が新しいウィンドウを開いていた場所を別にしました。だから、.. ..このような何か、私は完全にフォームを捨てて、私はJavaScriptですべてをやろうとしています:正常に動作します入力ファイルの使用回数に基づいて複数のajax要求が発生しました

$('.submitbutton').click{function() { ajaxFunction(); }); 

<input class="myInput" type="text"></input> 
<img src="submitbutton" class="submitIt" /> 

を私は持つAjaxの機能を始めています。

と、ユーザーのヒットは次のように入力します

$('.myInput').keydown(function(e){ 
if (e.keyCode == 13) { 
ajaxFunction(); 
return false; 
} 

最初のエントリのために...働きます。しかし、2番目の数字を入力すると、2回目のアヤックスリクエストが行われ、3番目の数字=今度は同じ場所への3つの同時アヤックスリクエストが発生します。

私は問題が変だと確信しています私は検証を設定しました。 KeyDownイベント機能は、このような他の{}なステートメントであり、入力における正確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; 
    } 

} 

は申し訳ありません1つを設定するにはしばらく時間がかかりますが、それが起こる必要がある場合はそれを行います。

答えて

0

私は入力からajaxの読み込みを行っている奇妙なバグがあります。これは愚かな方法かもしれませんが、Enterキーを使用してIEに協力することがわかった唯一の方法でした。

あなたが使用しているIEのバージョンかもしれません。しかし、Enterキーを押すとここに送信されます。

私は、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; 
    }); 
}); 
+0

PeeHaaが..私はこれで動作します感謝を。私はフォームを処理したくない理由から、ajaxを使用していませんでしたが、入力が何をしているのかはデータとして値を渡し、返されたjsonを解析することが必要なためです。 – Zac

+1

@ Zac:問題はありません。これらの行のコメントを外してください:)あなたが必要としていたIEの問題を修正するなど、他の助けが必要な場合は、私に知らせてください。 – PeeHaa

+0

こんにちはPeeHaa再びありがとう..私はちょうどフォームに戻って、今は正常に動作している必要がありました。あなたのスクリプトははるかに雄弁であり、私はそれを働かせることが大好きですが、それは最初の桁を過ぎても機能しません。その後、すべてが否定的になります。私はフィドルにそれを投げて、もう少し遊んでいきたいと思っています。 – Zac

関連する問題