2013-08-21 60 views
0

我正在backbone.js上工作。其實我在html5中開發了一些表單。
請參閱下面的代碼HTML5驗證在backbone.js onclick路由到另一個視圖不工作?

<form> 
<label for="name">Name:</label> 
<input type="text" id="nickname" required /> 
<label for="name">email:</label> 
<input type="text" id="email" required /> 
<button id="login" class="submit" type="submit">submit</button> 
</form> 

和的onclick提交按鈕,我正在路由到其他一些看法,但我的HTML5驗證沒有在這方面的工作。它只是跳過HTML5的表單驗證 請參見下面的骨幹代碼:

events:{  
    "click .submit":"submit", 

}, 
submit: function(event) 
{  
    app.navigate('abc', true);  
    window.history.back(); 
    } 

到目前爲止在提交功能,那麼HTML5驗證的工作,但路由到其他視圖中添加$Backbone.Validation.bind(this);時不working.Actually我不希望創建在骨幹模型並給出驗證模型。我只想使用html5驗證。 你能幫我解決嗎?

有人可以告訴我app.navigate作品在submit骨幹嗎?

回答

0

似乎骨幹忽略了html5響應, 但對我來說看起來是正確的,因爲你沒有捕獲任何錯誤,而是直接路由它。

+0

@notsure ... ...正是我不能明白爲什麼骨幹忽略HTML5迴應/ \ – user2139497

+0

對我來說,似乎你正在聽錯事件。通過捕捉點擊,您直接將用戶交互路由到其他目的地。相反,您應該讓html5驗證程序完成其工作,並且只有在等待提交事件完成此過程後才觸發您的自定義代碼。 – notsure

1

他們工作正常。你必須聽取提交事件而不是點擊。

events : {  
    'submit' : 'submit' 
} 

http://jsfiddle.net/vpetrychuk/csr8S/

+0

......我同意你,當我改變點擊提交然後html5驗證正在工作,但路由不起作用....你能幫忙嗎? – user2139497

+0

您導航到'abc',然後立即返回'window.history.back();'。這應該是你的問題。 –

+0

如果我刪除window.history.back();它仍然沒有路由到ABC .... – user2139497

0

可以調用點擊事件沒有的preventDefault:

events: { 
    "click input[type='submit']": "save_all" 
    }, 

save_all: function(event){ 
    if(!$("div.panel-instance-form form")[0].checkValidity()){ 
     return true; 
    }else{ 
     event.preventDefault(); 
      this.form_to_model(); 
      this.model.save(); 
      ... 
      return true; 
     } 
    }, 
相關問題