2015-01-02 28 views
0

在將表單中的數據發送到Rails控制器之前,我需要做一些JavaScript工作。jQuery - 檢測表單是否通過按ENTER發送出去

這是(在短)我的形式:

<form action="/results" class="search_users" method="POST"> 
    ... 
    <a class='search_users_btn' href='' id="search_users_form"> 
    <span class="streamline" aria-hidden="true">Search</span> 
    </a> 
</form> 

當點擊Search按鈕,然後這片JS的處理是:

$(".search_users_btn").click(function(e) { 
    var location; 
    e.preventDefault(); 
    location = $(".location_user").val(); 
    $.when(geocodeFrom(location)).done(function() { 
     $(".search_users").submit(); 
    }); 
    }); 

問題是,當用戶點擊ENTER ,因爲那麼上面的JavaScript代碼不會被執行。我試着添加以下內容:

$(".search_users").keypress(function(ev){ 
    if (ev.keyCode == 13) { 
    console.log('xx'); 
    //$("form")[0].submit(); 
    } 
}); 

但這個片段不處理,當用戶打ENTER和瀏覽器立即發送形式控制器。

如何處理用戶在Javascript中按下ENTER的情況?

+0

我相信你需要做一個遍歷所有'.search_users input'然後添加按鍵事件。 – abc123

+0

看看stopPropagation()函數來自己處理事件https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation – jazzytomato

+0

我不明白,但我的建議是在使用ajax的成功函數中使用按鍵功能。 –

回答

2

我覺得ENTER鍵觸發的形式提交,試試這個:

$(".search_users").keypress(function(ev){ 
    if (ev.keyCode == 13) { 
    ev.preventDefault(); 
    console.log('gotcha'); 
    //$("form")[0].submit(); 
    } 
}); 

,但你也可以使用一個標準按鈕和處理表單的提交事件,做你的處理,然後進行AJAX打電話到(PHP?)加工頁:

$(".search_users").on("submit", function(ev){ 
    ev.preventDefault(); //prevents the original submit 

    //information processing ... 

    //AJAX call to the form processing page ... 

    } 
}); 
相關問題