2014-02-05 2 views
0

Есть ли способ, которым я могу использовать javascript, чтобы предотвратить запуск формы php-скриптом. Например, что-то вроде этого:Предотвратить атрибут действия из запущенного скрипта php с помощью javascript

<form action="somePage.php" method="POST> 

<input type= "text" class= "field" name = "blah"> 

<input type="submit" value="Send" > 

</form> 

Я знаю, как проверить, что в этом текстовом поле с помощью JavaScript, но я хочу, чтобы предотвратить somePage.php бежать, если текстовое поле пустым. Я не пробовал ничего, потому что я просто не знаю, как это сделать.

Надеюсь, вы, ребята, понимаете мою проблему.

Благодаря

ответ

2

Вы можете прикрепить функцию к submit случае form:

document.getElementById('form-id').addEventListener("submit", function(e){ 
    var field1 = getElementById('field1').value; 
    if(field1=='' || field1 == null){ 
     e.preventDefault(); 
     alert('Pls fill the required fields.'); 
     return; 
    } 
    return true; 
}); 

ИЛИ

Ниже решение использует встроенные ЯШ:

Если вы хотите, чтобы запустить функцию JS перед отправкой формы в PHP скрипт, вы можете использовать onsubmit атрибут формы,

<form id="form-id" action="somePage.php" method="POST" onsubmit="return formSubmit();"> 

    <input type= "text" class= "field" id="field1" name = "blah"> 

    <input type="submit" value="Send" > 

</form> 

В formSubmit функции вы можете проверить значение входа, если его пустым или нет и если пусто, то вы можете просто return false;

var formSubmit = function(){ 
     var field1 = getElementById('field1').value; 
     if(field1=='' || field1 == null) 
      return false; 
     else 
      return true; 
    } 
+0

Я upvote, но я не могу, так как вы выступает встроенный JavaScript. –

+2

да? Я не следую. http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks @ Rao проверить это для форматирования. избегайте использования встроенных прослушивателей событий. – rlemon

+0

У меня создалось впечатление, что если я не буду вставлять в тег скрипта, SO не будет знать, на каком языке находится код. И не будет правильно его кодировать. – Rao

1

Вам просто нужно return false для вашего представить событие, захватывая форму (я использовал querySelector, потому что у вас нет идентификаторов или классов), а также добавления представить прослушивание события return false.

var x = document.querySelector("[method='POST']"); 
x.addEventListener("submit",function() { 
    return false; 
}); 
+0

похоже, что он мог работать. Я попробую – Jcorretjer

+0

Вы даже протестировали этот код? Не работает здесь. –

+0

Я пробовал это, и это, возможно, мне не хватает чего-то – Jcorretjer

-2

вы могли бы в вашем somePage.php есть это будет положение где-НОВО Beggin:

if(empty($_POST['blah'])){ 
    die(); 
} 

или инверсию

if(!empty($_POST['blah'])){ 
    //do what this php is supposed to 
} 
else{ 
    //display error 
} 

это предотвратит РНР запуск, если это поле не заполнено.

Лично я возвращаю их на ту же страницу, что и некоторые ошибки на странице.

+0

Вопрос в том, как предотвратить скрипт PHP с помощью javascript, пожалуйста, внимательно прочитайте –

+0

Как это предотвратить отправку формы? –

+0

все в порядке, спасибо за совет. Код всегда приемлем в моей книге, даже если это не то, что я спросил. Это может помочь в другой ситуации. – Jcorretjer

1

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

var first_form = document.getElementsByTagName('form')[0]; 

first_form.addEventListener('submit', function (e) { 
    e.preventDefault();  //This actually prevent browser default behaviour 
    alert('Don\'t submit'); 
    //Do your stuff here 
}, false); 

Лучше прочитать docs

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