2014-02-05 53 views
0

有沒有一種方法可以使用JavaScript來阻止表單運行php腳本。例如這樣的事情:阻止使用javascript運行php腳本的動作屬性

<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; 
}); 

OR

以下解決方案使用內聯JS:

如果你想提交表單的PHP腳本之前運行您的JS功能,您可以使用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

我會給予好評,但我不能,因爲你崇尚內嵌的JavaScript。 –

+2

呵呵?我沒有關注。 http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks @Rao檢查此格式。避免使用內聯事件偵聽器。 – rlemon

+0

我的印象是,如果我沒有放入腳本標記,SO不會知道代碼所在的語言,並且不會正確地對它進行顏色編碼。 – Rao

1

您只需return false您提交事件通過抓取的形式(我用querySelector,因爲你沒有ID或類),並加入提交聽取事件返回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 
} 

這個轉變會阻止你的PHP如果從運行該字段未填寫。

就我個人而言,我將它們返回到頁面上設置一些錯誤的相同頁面。

+0

問題是如何防止與JavaScript的PHP腳本,請仔細閱讀 –

+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