2013-11-11 5 views
0

Я пытаюсь использовать div как кнопку отправки для html-формы, потому что мне не нравится, как выглядит кнопка по умолчанию. Проблема в том, что у меня есть несколько одинаковых форм и div-кнопок на моей странице (они добавлены с jquery), поэтому у них нет уникального идентификатора. Когда у меня на моей странице больше одной формы, соответствующая div-кнопка представляет первую форму.

Каждая кнопка и форма расположены в контейнере большего размера. Можно ли сделать что-то вроде:

$(".div_btn").click(function() { 
    $(this).parent().$(".my_form").$("#my_submit").trigger("click") 
}); 

где .div_btn является ДИВ я использую в качестве кнопки, .my_form класса формы, и #my_submit является идентификатором кнопки отправки этой формы.

+2

У меня есть ощущение, что вы используете идентификаторы неправильно. Если у вас есть идентификатор, почему бы не просто '$ ('# my_submit'). Trigger (" click ")'? (Редактирование: я перечитываю вопрос ... Идентификаторы должны быть уникальными.) – adamdunson

+3

показать нам ваш html – Krishna

ответ

2

Все идентификаторы должны быть уникальными. Создайте уникальные идентификаторы для форм. Затем используйте:

$("#uniqueFormId").submit(); 

Что касается создания уникальных идентификаторов, быстрый пример:

В HTML:

<button id="formAdder">Add Form</button> 
<div id="formHolder"> 
</div> 

JQuery:

$(document).ready(function() { 
    $("#formAdder").click(function() { 
    var formNum = $("form").length; 
    $("#formHolder").append("<form id='uniqueForm" + formNum + "'>Form Id is uniqueForm" +formNum+"</form>"); 
    }); 
}); 

В Fiddle.

+0

Эй, Мэтью, мне бы хотелось, чтобы я мог это сделать, но я добавляю формы на страницу с помощью JQuery. Таким образом, вы нажимаете кнопку, и форма создается, позволяя пользователю создавать столько, сколько захочет. Это помогло бы, если бы вы могли сообщить мне способ сделать это, назначив каждой форме уникальный идентификатор. –

2

Ответ на ваш вопрос не достигнет того, что вы хотите сделать, поскольку запуск клика по отправке (по javascript) не отправит форму. Это, однако, будет, если вы DOM является то, что я думаю, что это:

$(".div_btn").click(function() { 
    $(this).closest('form').submit(); 
}); 
1

Try:

$('.div_btn').click(function() { 
    $(this).parent().find('#my_submit').trigger('click'); 
}); 
+0

Вы - герой :) –

+1

Хотя это может сработать, вы никогда не должны использовать один и тот же ID более одного раза. Это может привести к ошибкам позже в разработке. Я обновил свой ответ, чтобы указать, как создавать уникальные идентификаторы формы «на лету». –

+1

Я согласен с @MatthewJohnson, теперь это может работать, но оно не предназначено для лучшей практики. Вы можете опубликовать некоторые из своих JS и HTML и обратиться за помощью в рефакторинг. – Brian

Смежные вопросы