HTML-форма с двумя кнопками отправки и двумя “целевыми” атрибутами

Оператор присваивания возвращает значение назначенного значения . Итак, я мог бы использовать его в такой ситуации:

if(x = getMyNumber())

Затем я присваиваю x значение, возвращаемое getMyNumber, и проверяю, не равен ли он нулю.

Избегайте этого, я привел вам пример, чтобы помочь вам понять это.

Редактировать: добавление Просто предложение (может понравиться).

Чтобы избежать таких ошибок, вплоть до некоторых расширений, нужно записать условие if как if(NULL == ptr) вместо if(ptr == NULL), потому что при неправильном написании оператора проверки равенства == в качестве оператора =, компиляция выдаст ошибку lvalue с if(NULL = ptr), но if(res = NULL), переданную компилятором (что вы не имеете в виду), и останется ошибкой в ​​коде для среды выполнения.
По той же причине я предпочитаю писать if(getMyNumber() ==x) вместо if(x == getMyNumber())

Следует также читать: Критика в отношении этого вида кода.

73
задан Peter Mortensen 14 July 2019 в 21:11
поделиться

6 ответов

Более уместно подходить к этой проблеме с точки зрения того, что форма будет иметь действие по умолчанию, привязанное к одной кнопке отправки, а затем альтернативное действие, привязанное к простой кнопке.

62
ответ дан 24 November 2019 в 12:09
поделиться

На каждой из ваших кнопок вы можете иметь следующее:

<input type="button" name="newWin" onclick="frmSubmitSameWin();">
<input type="button" name="SameWin" onclick="frmSubmitNewWin();">

Затем несколько небольших js-функций;

<script type="text/javascript">
function frmSubmitSameWin() {
form.target = '';
form.submit();
}


function frmSubmitNewWin() {
form.target = '_blank';
form.submit();
}
</script>

Это должно помочь.

0
ответ дан 24 November 2019 в 12:09
поделиться

В этом примере взято из

http://www.webdeveloper.com/forum/showthread.php?t=75170

Вы можете увидеть, как изменить цель на событии OnClick кнопки.

function subm(f,newtarget)
{
document.myform.target = newtarget ;
f.submit();
}

<FORM name="myform" method="post" action="" target="" >

<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_self');">
<INPUT type="button" name="Submit" value="Submit" onclick="subm(this.form,'_blank');">
5
ответ дан 24 November 2019 в 12:09
поделиться

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

Если у вас несколько кнопок, например

<form action="mypage" method="get">

  <input type="submit" name="retry" value="Retry" />
  <input type="submit" name="abort" value="Abort" />

</form>

Примечание: Я использовал GET, но он работает и для POST

Затем вы можете легко определить, какая кнопка была нажата - если переменная retry существует и имеет значение, то была нажата повторная попытка, и если переменная abort существует и имеет значение, то была нажата кнопка abort. Эти знания затем можно использовать для перенаправления в соответствующее место.

Этот метод не требует Javascript.

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

77
ответ дан 24 November 2019 в 12:09
поделиться

Вот краткий пример сценария, который отображает форму, изменяющую целевой тип:

<script type="text/javascript">
    function myTarget(form) {
        for (i = 0; i < form.target_type.length; i++) {
            if (form.target_type[i].checked)
                val = form.target_type[i].value;
        }
        form.target = val;
        return true;
    }
</script>
<form action="" onSubmit="return myTarget(this);">
    <input type="radio" name="target_type" value="_self" checked /> Self <br/>
    <input type="radio" name="target_type" value="_blank" /> Blank <br/>
    <input type="submit">
</form>
1
ответ дан 24 November 2019 в 12:09
поделиться

Отправьте обе кнопки на текущую страницу, а затем добавьте этот код вверху:

<?php
    if(isset($_GET['firstButtonName'])
        header("Location: first-target.php?var1={$_GET['var1']}&var2={$_GET['var2']}");
    if(isset($_GET['secondButtonName'])
        header("Location: second-target.php?var1={$_GET['var1']}&var2={$_GET['var2']}");
?>

Это также можно сделать с помощью $ _SESSION, если вы не хотите, чтобы они видели переменные.

0
ответ дан 24 November 2019 в 12:09
поделиться
Другие вопросы по тегам:

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