javascript
html注释绕过,关于javascript:提交时绕过HTML的“ required”属性
本問題已經有最佳答案,請猛點這里訪問。
提交表單之前,我將required用于第一次檢查。
Foo:
問題是,我有一個"忽略"按鈕,它也提交表單,然后后端邏輯在數據庫中設置正確的狀態。 在這種情況下(忽略),不需要驗證(因為不需要填寫字段" Foo")。
處理這兩種情況的最佳方法是什么?
我知道我可以放棄"必需"而在其他地方(后端/ JavaScript)進行驗證。 我正在尋找一種保持"必需"的方法。
我可以在忽略按鈕方案中使用一些Js onclick并在發送表單之前刪除屬性(https://stackoverflow.com/a/13951500/356726)。
但是實際上我正在尋找更智能的東西。
-編輯-
是的,必填屬性HTML5的重復項
#2可能是最好的選擇。 如果使用忽略提交而不是提交提交,則驗證服務器端完全或完全不使用必需屬性,而是繞過驗證。
#2對我也很有意義。
是的,我錯過了以上
無需JavaScript,不需要第二種形式,驗證可以保留:
正是在這種用例中,HTML5規范為提交元素(如)設計了formnovalidate屬性,作為表單提交的屬性之一:
The formnovalidate attribute can be used to make submit buttons that do not trigger the constraint validation.
所以簡單地說
Foo:
您的#2是常見的方法。就像是:
$('input[value="ignore"]').click(function() {
$(this).siblings('input[type="text"]').removeAttr('required');
});
可能必須使用mousedown擊敗提交。
如果要使用JavaScript,則最好執行.prop("required", false)
您應該基于以下理由使用方法#1:使用required代替JavaScript驗證的主要原因是它更簡單并且即使禁用了JavaScript也可以使用。這里的簡單性不適用,因為使用required使事情變得更加困難。后一個原因也不適用:禁用JavaScript且瀏覽器支持required時,除非在文本字段中輸入了一些數據,否則"忽略"按鈕將不起作用。
另一種替代方法是@MattKenefick的答案中提到的替代方法。它甚至可能導致更簡單的結構和邏輯。如果表單確實像示例中一樣簡單,則將其拆分為兩種形式很簡單:
Foo:
這并不意味著"在所有情況下都需要該字段"。 它確實意味著"驗證表單時必填字段"-可能不是,請參閱我的答案。
@Bergi,對,我已刪除了該段。
如果您不想使用Javascript,則可以使它們成為單獨的形式,并為ignore形式將所有輸入設置為隱藏。
不是最好的選擇,但這是一個替代選擇。
總結
以上是生活随笔為你收集整理的html注释绕过,关于javascript:提交时绕过HTML的“ required”属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity 多台 显示器 控制_飞利浦2
- 下一篇: 鸿蒙之火是什么意思,鸿蒙突然火了!鸿蒙是