2014-05-02 44 views
0

爲什麼當我使用javascript時,基本的HTML輸入驗證沒有執行?
說出最小最大屬性。用JS提交表單不要執行基本的驗證

這裏的HTML:

<form action="#" method="get">Quantity (between 1 and 5): 
    <input type="number" name="quantity" min="1" max="5"> 
    <br /> 
    <input type="submit" value="with HTML"> 
</form> 
<button id="sender">with JS</button> 

JS:

$("#sender").click(function (event) { 
    $("form").submit(); 
}); 

而且活生生的例子:http://jsfiddle.net/txP4R/2/

回答

1

你必須觸發正常的提交按鈕:

$("#sender").click(function (event) { 
    $('input[type="submit"]').trigger('click'); 
    event.preventDefault(); 
}); 

看到這個小提琴:http://jsfiddle.net/gopeter/txP4R/3/

+0

在現實中我不t有一個真正的 nrofis

+0

比你必須添加一個不可見的提交按鈕:)。有一個Javascript方法('checkValidity()')來檢查HTML5驗證,但它在所有瀏覽器上都不受支持,所以您必須使用此解決方法。 – Slevin

1

您需要將按鈕與表單關聯,並檢查表單是否有效。看到這個 jfiddle:

http://jsfiddle.net/txP4R/5/

的HTML:

<form action="#" method="get" id="form">Quantity (between 1 and 5): 
    <input type="number" name="quantity" min="1" max="5"> 
    <br /> 
    <input type="submit" value="with HTML"> 
</form> 
<button id="sender" form="form">with JS</button> 

而jQuery的:

$("#sender").click(function (event) { 
    if (("#form")[0].checkValidity()) { 
     $("#form").submit(); 
    } 
}); 

編輯:良好的漁獲A.沃爾夫

+1

+1'form'屬性是要走的路。只是一件事:'if((「#form」)。isValid())'你的意思是:if($('form')[0] .checkValidity())'?!無論如何,你不應該使用表單屬性綁定點擊事件。現在,OP可能會爲'input'添加'required'屬性 –