2013-01-04 68 views
1

我有這樣更改提交表單的提交屬性是一種很好的做法嗎?

<form onsubmit="return false;" id="myform"> 
<input type="text" id="data"/> 
<input type="submit" value="Submit" id="submitForm" /> 
</form> 

<script> 
$(document).ready(function() { 

    var form = $('#myform'); 

    var result = form.find('#data').val() != ""; 

    if ($.data(form, 'validated') && result) { 
     return true; 
    } 
    else 
     $.data(form, 'validated', false);  

    $.post('http://myweb/action', form.serialize(), function (data) { 
     var json_result = $.parseJSON(data); 
     if (result && json_result.is_valid) { 
      $.data(form, 'validated', true); 
      form.attr('onsubmit', 'return true;'); 
      form.submit(); 
     } 
     else { 
      alert('There is an error in the form data!'); 
     } 
    } 

}); 
</script> 

代碼是一個好的做法?

+1

根本不好使用'onsubmit'作爲元素屬性。代碼有點難以理解 - 這不是一個完整的例子,對吧? – JJJ

+0

我建議你使用jQuery驗證插件進行驗證。 –

+0

您的代碼邏輯上沒有意義。 if語句在文檔準備就緒時運行,永不再運行。如果它沒有在文檔準備好時進行驗證,它將永遠不會驗證。 –

回答

0

只是FYI。不管你想要做這種風格

form.attr('onsubmit', 'return true;'); 

是不好的,因爲通過設置onSubmit屬性直接你殺死一個可以綁定到submit事件其他處理。

+0

怎麼樣更好?你有一個例子嗎? –

+0

我再次查看了你的代碼 - 你能否解釋爲什麼你需要這一行('form.attr('onsubmit','return true;');')呢? – vyakhir