2015-04-08 46 views
0

試圖提交表單用一個div(而不是f.submit按鈕)軌道4表單提交的股利,確認沒有工作

<%= form_for @user, url: {action: "submit_user"}, html: {id: "user_submit", class: "form"}, :method => "post" do |f| %> 
    <%= f.text_field :first name, :required => true, :placeholder => 'first name', :autocomplete => :off %> 
    <%= f.text_field :last name, :required => true, :placeholder => 'last name', :autocomplete => :off %> 
    <div id="submituser" class="some very fancy css here" onclick = "document.forms['user_submit'].submit();"> 
<% end %> 

的問題是,形式是當我有問題發送,但未經驗證(導致它,如果不輸入任何發送空白的姓和名),使用時

<% f.submit "submit" %> 

驗證確實有效。

感謝

+0

你可以做這樣的驗證服務器端太.. :) –

+0

是的,這是真的,但2小時挫折之後。 ) – amitben

回答

0

找到我的答案在這裏: Difference between handling $(「form」).submit or an click event?

我引述@Giovanni Sferro:

的點擊回調只調用如果用戶真的點擊提交按鈕。但在某些情況下,您可以通過javascript自動提交表單,在這種情況下,在回調提交時不會觸發點擊回調。我會建議始終使用提交驗證和表單的內部操作,同時使用點擊回調進行動畫或與點擊按鈕操作相關的其他事情。

所以我的(工作)的代碼如下所示:

<div id="submituser" class="some very fancy css here" onclick = '$("#user_submit input[type=\"submit\"]").click();'> 
1

我猜document.forms['user_submit'].submit();不會觸發提交事件,所以你必須手動啓動驗證。但是,使用div而不是button是什麼意思?您也可以使用some very fancy css here設計一個按鈕。或進行 '隱藏' 提交按鈕,添加onclick = "document.form.button.click()"div :-)

+0

謝謝@IvanSelivanov,但我測試了它,但它沒有工作(仍然跳過驗證) 爲您的問題: 'document.forms ['user_submit']。submit ();'不會觸發提交表單,但會跳過驗證部分。 風格的問題,我有一個非常複雜的按鈕,從許多層div創建,這就是爲什麼提交按鈕是不夠我的。 – amitben

+1

@amitben,我想答案在這裏:http://stackoverflow.com/questions/18774821/submit-event-does-not-fire-if-submit-initiated-programatically – IvanSelivanov

+0

感謝您的提示,我需要進一步調查。 – amitben