Как я выбираю родительскую форму, на основе которой нажата кнопка отправки?

У меня есть веб-страница с 3 формами на нем. Не вложенный, просто один за другим (они почти идентичны, всего одна скрытая переменная, это отличается). Пользователь только заполнит одну форму, и я хотел бы проверить/и т.д. все формы только с одним сценарием JS.

Таким образом, как, когда пользователь нажимает кнопку отправки form#1, я заставляю свой js сценарий только иметь дело с полями в form1? Я заключаю, что это имеет некоторое отношение к $ (этот) .parents, но я не уверен, что сделать с ним.

Мой сценарий проверки (который я использовал в другом месте только с единственной формой), взгляды что-то как так:


$(document).ready(function(){
    $("#submit").click(function(){
        $(".error").hide();
        var hasError = false;

        var nameVal = $("#name").val();
        if(nameVal == '') {
            $("#name").after('Please enter your name.');
            hasError = true;
        }


        if(hasError == false) {blah blah do all the processing stuff}

Я должен заменить вещи как $ (" #name") .val () с $ (этот) .parents ('форма') .name.val ()? Или существует ли лучший способ пойти об этом?

Спасибо!

119
задан isherwood 24 July 2019 в 15:13
поделиться

3 ответа

Можно выбрать форму как это:

$("#submit").click(function(){
    var form = $(this).parents('form:first');
    ...
});

Однако обычно лучше присоединить событие к отправлять событию самой формы, поскольку это инициирует, отправляя путем нажатия клавиши Enter от одного из полей:

$('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});

Для выбора полей в форме используйте контекст формы. Например:

$("input[name='somename']",form).val();
184
ответ дан Eran Galperin 24 November 2019 в 01:46
поделиться

Получить форму, что отправление состоит внутри в том почему не всего

this.form

Самый Легкий & самый быстрый путь к результату.

46
ответ дан Moxy 24 November 2019 в 01:46
поделиться

Эйлин: Нет, это не var nameVal = form.inputname.val (); . Это должно быть либо ...

в jQuery:

// you can use IDs (easier)

var nameVal =  $(form).find('#id').val();

// or use the [name=Fieldname] to search for the field

var nameVal =  $(form).find('[name=Fieldname]').val();

Или в JavaScript:

var nameVal = this.form.FieldName.value;

Или комбинация:

var nameVal = $(this.form.FieldName).val();

С помощью jQuery вы можете даже перебирать все входные данные в форме:

$(form).find('input, select, textarea').each(function(){

  var name = this.name;
  // OR
  var name = $(this).attr('name');

  var value = this.value;
  // OR
  var value = $(this).val();
  ....
  });
3
ответ дан 24 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: