Как сделать так, чтобы мой оператор подтверждения опубликовал статус, если моя функция оценивается как true, или отменил, если false? - PullRequest
2 голосов
/ 26 апреля 2019

Я хочу, чтобы окно подтверждения появлялось, когда пользователь нажимает кнопку «Отправить», но только в том случае, если его сообщение содержит такие строки, как «продажа» и «£». К сожалению, код перенаправляется на страницу действий независимо от того, нажата ли кнопка OK или Отмена.

Я также попытался создать еще одно «если еще», содержащее оператор подтверждения, чтобы вернуть true для Ok или False для Cancel, но безрезультатно.

Извините, если кое-что из этого трудно понять, я новичок и пытаюсь обернуть голову вокруг JavaScript.

<script>
function check() {

 var post = document.forms["myForm"]["newPost"].value;
    if (post.indexOf('sale') > -1 || post.indexOf('£') > -1) {
     confirm("If this is a 'for sale' post, please post to the marketplace instead. Press OK to post as a general status."); 
 }
}
</script>

<form name="myForm" action="/post-page.php" onSubmit="return check()" method="post">
Post: <input name="newPost" id="newPost">
  <input type="submit" value="Post Now">
</form>

Ожидается: Нажатие ОК публикует статус.

Результаты: обе опции публикуют статус.

1 Ответ

3 голосов
/ 26 апреля 2019

Вы должны использовать значение return confirm() для управления потоком события :

function check() {

 var post = document.forms["myForm"]["newPost"].value;
    if (post.indexOf('sale') > -1 || post.indexOf('£') > -1) {
     var res = confirm("If this is a 'for sale' post, please post to the marketplace instead. Press OK to post as a general status."); 
     if(res) return true;
     else return false;
 }
}
<form name="myForm" action="/post-page.php" onSubmit="return check()" method="post">
Post: <input name="newPost" id="newPost">
  <input type="submit" value="Post Now">
</form>
...