2011-11-08 21 views
0

我有一個奇怪的錯誤,我正在從輸入做一個ajax加載。我意識到這可能是一種愚蠢的方式,但這是我發現讓IE與使用Enter鍵合作的唯一方式。然後,我有一個單獨的問題,在IE中提交的地方不斷打開一個新窗口,而不僅僅是使用Ajax GET。所以..我完全拋棄了形式,我試圖做的一切與JavaScript ..是這樣的:根據輸入字段的使用次數發生多個ajax請求

<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; 
} 

該工程..第一個條目。但後來如果你輸入第二個數字,它使得阿賈克斯請求2次,第三個數字=現在同時發生3個同時發生的阿賈克斯請求,無限廣告...

我很確定問題是古怪我設置驗證的方式。該keydown功能是在其他{} statment這樣並不會工作,直到有輸入正好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

我有一個奇怪的錯誤,我從輸入做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; 
    }); 
}); 
+0

感謝PeeHaa ..我將與這方面的工作。我沒有使用ajax只是因爲我不想處理表單,但是因爲輸入的內容是將值作爲數據傳遞給休息,然後解析返回的json。 – Zac

+1

@Zac:沒問題只需取消註釋那些行:)如果您需要更多幫助(例如通過修復您遇到的那些IE問題),請讓我知道。 – PeeHaa

+0

嗨PeeHaa再次感謝..我需要回到表單,現在它工作正常。你的腳本非常雄辯,我很樂意讓它工作,但它不會超過第一個數字。然後它全部消極。我想把它扔在小提琴中,再玩一下......可能最終會爲它製作一個新的SO問題。 – Zac

相關問題