簡體   English   中英

使用帶有驗證的href長提交表單

[英]Submit form using a href a long with validation

我在使用這個小腳本時遇到了麻煩。 我有一個產品清單。 可以從此列表將每種產品添加到購物車。

但是我需要驗證是否選擇了變體。 驗證工作正常,但提交無效。

JS

function submitForm() {
    if ($('#variants').val() !== '') {
        $(this).closest('form').submit();
    } else {
        alert("You need to pick variant");
    }
}

HTML

<form id="form" action="FormPost.aspx">
    <select name="variants" id="variants" class="variants">
        <option value="">Select variant</option>   
        <option value="Black">Black</option>
        <option value="White">White</option>
        <option value="Red">Red</option>
    </select>
    <a href="javascript:submitForm();" class="addToCart buybtn_small text-left pull-right">Buy</a>
</form>

JSFiddle

您應該始終嘗試使腳本不引人注意
改用jQuery的.click()方法:

$('.addToCart').click(function(e){
    e.preventDefault();
    var form = $(this).closest('form');

    // to access the select by tag name:
    if (form.find('select').val()) {

    // to access the select by class:
    // if (form.find('.variants').val()) {

        form.submit();
    } else {
        alert("You need to pick variant");
    }
});

HTML:

<form id="form" action="FormPost.aspx">
    <select name="variants" id="variants" class="variants">
        <option value="">Select variant</option>   
        <option value="Black">Black</option>
        <option value="White">White</option>
        <option value="Red">Red</option>
    </select>
    <a href="#" class="addToCart buybtn_small text-left pull-right">Buy</a>
</form>

jQuery找不到您的表單,請改用此表單:

$('form#form').submit();

這是經過更新的小提琴,已經過調整:

http://jsfiddle.net/y5ytrcuq/

(我添加了jQuery參考,使您的submit函數成為window一部分,並更改了上面的行)

您應該使用jQuery .submit()方法和一個Submit按鈕。 提交按鈕是提交表單的標准化方法,它對於語義和可訪問性更好。

此方法檢測使用“提交”按鈕提交表單的時間(比僅檢測對鏈接的單擊要好,並且比將代碼放入href屬性更好)。
您可以向其傳遞執行檢查的功能。 然后您使用事件的preventDefault()方法取消提交:

$( "#form" ).submit(function( event ) {
  if($("variants").val() == "")
  {
    //Something is wrong, display a warning and stop the submit action
    alert("You need to chose a variant")
    event.preventDefault();
  }
  //Everything is ok, the submit action happens normally
});

如果event.preventDefault(); 不稱表單是正常提交​​的。 如果您不必查找被單擊的代碼,則更改多種表單的代碼將更加容易。
這是JsFiddle: https ://jsfiddle.net/k3zmon2d/3/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM