Подтвердить что ты не робот

Как я могу сделать кнопку "div" представить форму, в которой он сидит?

У меня есть код ASP.Net, создающий мою кнопку HTML для меня с помощью div, чтобы заставить его выглядеть и вести себя так, как я хочу. Этот вопрос относится к HTML, создаваемому кодом ASP.Net.

Стандартная кнопка проста, просто установите событие onClick для изменения местоположения страницы:

<div name="mybutton" id="mybutton" class="customButton" onClick="javascript:document.location.href='wherever.html';">
Button Text
</div>

Это отлично работает, однако, если я хочу, чтобы кнопка, подобная этой, передавала форму, в которой она находится, я бы предположил что-то вроде ниже:

<form action="whatever.html" method="post">
    <div name="mysubmitbutton" id="mysubmitbutton" class="customButton" onClick="javascript:this.form.submit();">
    Button Text
    </div>
</form>

Однако, это не работает:( У кого-нибудь есть какие-то блестящие идеи?

4b9b3361

Ответ 1

onClick="javascript:this.form.submit();">

this в div onclick нет атрибута form, вы можете попробовать this.parentNode.submit() или document.forms[0].submit() выполнить

Кроме того, onClick должен быть onClick, некоторые браузеры не работают с onClick

Ответ 2

Знаете ли вы о <button> элементах? Элементы <button> могут быть написаны как элементы <div> и могут иметь type="submit", поэтому они передают форму без javascript:

<form action="whatever.html" method="post">  
    <button name="mysubmitbutton" id="mysubmitbutton" type="submit" class="customButton">  
    Button Text
    </button>  
</form>  

Использование <button> также более семантично, тогда как <div> является очень общим. Там одно (не) оговорка: a <button> может содержать фразинг-контент, хотя вряд ли кому-то понадобится какой-либо другой тип контента при использовании элемент для отправки формы.

Ответ 3

Чтобы сохранить сценарий в одном месте, а не использовать onClick в теге HTML, добавьте следующий код в блок script:

$('#id-of-the-button').click(function() {document.forms[0].submit()});

Предполагается, что у вас есть только одна форма на странице.

Ответ 5

Несколько замечаний:

  • Клиенты, не поддерживающие JavaScript, не смогут отправить вашу форму.
  • Спецификация w3c не допускает вложенных форм в HTML - вы потенциально обнаружите, что теги действий и методов игнорируются для этой формы в современных браузерах, и что другие элементы управления ASP.NET перестают корректно возвращаться (поскольку их форма закрыта).

Если вы хотите, чтобы его рассматривали как надлежащую обратную передачу ASP.NET, вы можете вызвать методы, предоставленные фреймворком, а именно __doPostBack(eventTarget, eventArgument):

<div name="mysubmitbutton" id="mysubmitbutton" class="customButton"
     onclick="javascript:__doPostBack('<%=mysubmitbutton.ClientID %>', 'MyCustomArgument');">
  Button Text
</div>

Ответ 6

Почему каждый должен усложнять ситуацию. Просто используйте jQuery!

<script type="text/javascript">
  $(document).ready(function() {
    $('#divID').click(function(){
      $('#formID').submit();
    )};
    $('#submitID').hide();
  )};
</script>

<form name="whatever" method="post" action="somefile.php" id="formID">
  <input type="hidden" name="test" value="somevalue" />
  <input type="submit" name="submit" value="Submit" id="submitID" />
</form>

<div id="divID">Click Me to Submit</div>

Div не обязательно должен быть в форме для его отправки. Единственное, что здесь отсутствует, это включить jquery.js.

Кроме того, есть кнопка "Отправить", которая скрыта jQuery, поэтому, если используется несовместимый браузер, кнопка "Отправить" отобразит и позволит пользователю отправить форму.