2016-05-18 80 views
-2

我有頁面重新加載的問題。以各種形式提交網頁重新提交

HTML

<form onsubmit="return commentForm()"> 
    <input type="text" id="text"> 
    <input type="checkbox" id="check" name="check"> 
    <input type="submit" value="Comment" class="txt2"> 
</form> 
<p id="demo"></p> 

的Javascript

function commentForm() { 
    var x = document.getElementById('check').checked; 
    var y = document.getElementById('text').value; 
    if (y == null || y == "") { 
      alert('please enter some value'); 
      return false; 
    } 
    if (x == false) { 
      alert('Please check the checkbox') 
      return false; 
    } 
    else { 
      document.getElementById('demo').innerHTML += document.getELementById('text').value + "<br>"; 
      return true; 
    } 
} 

我的問題是,當我提出它,而不是重裝複製文本的網頁。
請幫助我。

+0

我可以讓我的病毒染成藍色嗎?請閱讀[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve) – 4castle

+0

對不起。我是堆棧溢出新手。真對不起。請幫我解決這個問題 – Advaith

回答

0

function commentForm() { 
 
    var checkbox = document.getElementById('check').checked; 
 
    var text = document.getElementById('text').value; 
 
    if (!text) { 
 
     alert('please enter some value'); 
 
     return false; 
 
    } 
 
    if (!checkbox) { 
 
     alert('Please check the checkbox'); 
 
     return false; 
 
    } 
 
    else { 
 
     document.getElementById('demo').innerHTML += text + "<br>"; 
 
     return false; 
 
    } 
 
}
<form onsubmit="return commentForm()"> 
 
    <input type="text" id="text"> 
 
    <input type="checkbox" id="check" name="check"> 
 
    <input type="submit" value="Comment" class="txt2"> 
 
</form> 
 
<p id="demo"></p>

如果你想在頁面不被重定向可以在else語句中使用return false

+0

我建議使用描述性變量名稱。你也可以說'innerHTML + = y',而不是再次獲取元素,因爲你將它賦給了變量'var y',這是描述變量命名會派上用場的地方。 – jdgregson

+0

@jdgregson我剛剛複製了所有者的代碼,以幫助他解決問題。我知道。你可以向Advaith解釋。 – Conor

2

試試這個。我將提交輸入中的按鈕更改爲按鈕輸入,以便它只運行腳本。您不希望表單提交,這需要重新加載頁面以將表單「提交」給服務器。你也需要從文本輸入得到value

document.getElementById('demo').innerHTML += document.getElementById('text').value + "<br>

但既然你已經把那個價值爲var text你可以重用該變量。此外,您不檢查複選框是否被選中,因爲它正在查看兩個輸入的變量x。嘗試運行此:

function commentForm() { 
 
    var checkBox = document.getElementById('check').checked; 
 
    var text = document.getElementById('text').value; 
 
    if (!text) { 
 
     alert('please enter some value'); 
 
     return false; 
 
    } 
 
    if (!checkBox) { 
 
     alert('Please check the checkbox') 
 
     return false; 
 
    } else { 
 
     document.getElementById('demo').innerHTML += text + "<br>"; 
 
     return true; 
 
    } 
 
}
<form> 
 
    <input type="text" id="text"> 
 
    <input type="checkbox" id="check" name="check"> 
 
    <input type="button" value="Comment" class="txt2" onclick="return commentForm()"> 
 
</form> 
 
<p id="demo"></p>

+0

感謝兄弟。但是這裏寫的代碼是錯誤的。我在原來的網頁上正確寫下了它。從

更改爲將使用返回false或true? – Advaith

+0

你對返回碼有什麼意義? 'commentForm()'函數在將文本附加到'demo'時返回'true',但在窗體上單擊按鈕後沒有任何內容使用該返回代碼。 – jdgregson

+0

這只是我原始代碼的簡短形式。在我原來的我需要使用'return',因爲它在代碼中很大。 – Advaith