jQuery - динамически генерировать действие формы для submit не работает в IE и Edge [duplicate]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
30
задан Deduplicator 1 February 2015 в 17:31
поделиться

6 ответов

Прикрепите к событию кнопки отправки click и измените атрибут action в обработчике событий.

15
ответ дан Oded 19 August 2018 в 09:06
поделиться
  • 1
    это то, что я сделал в своем коде, но текущая страница перезагружается ... – dave 12 April 2011 в 21:04
  • 2
    @dave - если вы покажете свой код ... – Oded 12 April 2011 в 21:06
  • 3
    @dave - можете ли вы также объяснить, почему вы не можете установить атрибут action в требуемое значение до submit? – Oded 12 April 2011 в 21:10
  • 4
    это то, что я пытаюсь выяснить tbh. – dave 12 April 2011 в 21:24
  • 5
    @dave - я имею в виду при визуализации HTML. И, не видя своего кода, я не думаю, что помощь будет возможна. – Oded 12 April 2011 в 21:28

Вы можете сделать это на стороне javascript.

<input type="submit" value="Send It!" onClick="return ActionDeterminator();">

При щелчке, функция JavaScript ActionDeterminator () определяет URL альтернативного действия. Пример кода.

function ActionDeterminator() {
  if(document.myform.reason[0].checked == true) {
    document.myform.action = 'http://google.com';
  }
  if(document.myform.reason[1].checked == true) {
    document.myform.action = 'http://microsoft.com';
    document.myform.method = 'get';
  }
  if(document.myform.reason[2].checked == true) {
    document.myform.action = 'http://yahoo.com';
  }
  return true;
}
3
ответ дан hexacyanide 19 August 2018 в 09:06
поделиться

Это простой способ сделать это, если вам нужно только поддерживать современные браузеры: на кнопку отправки добавить атрибут formaction="/alternate/submit/url", например:

<form>
    [fields]
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">
</form>

Он также работает на <button> теги.

Получено, что старые версии IE (& lt; 10) и Android-браузер (& lt; 4.0) не поддерживают его. Итак, если вам нужно поддерживать старые браузеры, тогда существующие ответы JS, вероятно, будут работать лучше для вас.

Дополнительная информация: http://www.wufoo.com/html5/attributes/13 -formaction.html

21
ответ дан Nathan Friedly 19 August 2018 в 09:06
поделиться

Вы также можете установить значение атрибута onSubmit в теге формы. Вы можете установить его значение с помощью Javascript.

Что-то вроде этого:

<form id="whatever" name="whatever" onSubmit="return xyz();">
    Here is your entire form
    <input type="submit">
</form>;

<script type=text/javascript>
function xyz() {
  document.getElementById('whatever').action = 'whatever you want'
}
</script>

Помните, что onSubmit имеет более высокий приоритет, чем атрибут действия. Поэтому всякий раз, когда вы указываете значение onSubmit, эта операция будет выполнена сначала, а затем форма перейдет в действие.

13
ответ дан Paulpro 19 August 2018 в 09:06
поделиться
  • 1
    Браво для использования более подходящего события отправки, а не щелчка. – Edward Anderson 25 April 2015 в 23:28
  • 2
    Это должен быть главный ответ. Обычно я отправляю формы, нажимая <enter>, не щелкая в любом месте. – Paulpro 5 December 2015 в 01:28
  • 3
    зачем использовать onSubmit="return xyz();", как это. разве мы не можем иметь onSubmit="xyz()"? – prime 11 February 2016 в 08:15
  • 4
<input type='submit' value='Submit' onclick='this.form.action="somethingelse";' />

Или вы можете изменить его вне формы, а javascript - обычным способом:

 document.getElementById('form_id').action = 'somethingelse';
38
ответ дан rogerdpack 19 August 2018 в 09:06
поделиться
  • 1
    Это хороший краткий пример. Помните, что если у вас есть валидация, которая имеет место при отправке формы, и если эта проверка не удалась после нажатия этой кнопки, тогда нажатие на другую кнопку отправки может вызвать новое заданное действие. – Michael Petito 18 September 2013 в 20:36
  • 2
    есть ли способ, которым я мог бы установить действие формы равным выбору опции в форме? – Samolivercz 10 March 2018 в 15:59

Формация HTML5 не работает в старых браузерах IE. Легкое исправление, основанное на некоторых из приведенных выше ответов, следующее:

<button onclick="this.form.action='/PropertiesList';" 
    Account Details </button>
1
ответ дан user2099484 19 August 2018 в 09:06
поделиться
Другие вопросы по тегам:

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