在onsubmit事件

时间:2016-03-10 04:00:35

标签: jquery text

在我的项目中,我有以下JS和HTML代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>

function myFunction() {
    //document.getElementById('demo').innerHTML = Date();
    alert("done");
    var a = parseInt(document.getElementById('number1').value);
    var b = parseInt(document.getElementById('number2').value);
    var c = a + b;
    $.get('/_add_numbers',{number: c}, function(data,status){
        res = JSON.parse(data);
        alert(status);
        $("#feedback").text("change");
        alert("show");
    });
};

</script>
</head>
<body>
<h1>My First JavaScript V2</h1>
<p id="demo"></p>
<form onsubmit="myFunction()">
    <input type="text" size="5" name="a" id = "number1"> +
    <input type="text" size="5" name="b" id = "number2"> =
    <span id="result">?</span>
    <br>
    <input type="submit" value="calculate server side" >
</form>
<p id="feedback">feedback</p>
</body>
</html> 

警报显示状态成功。

该段落的内容转为&#34;更改&#34;,但最终改回原来的&#34;反馈&#34;。那是什么原因?

3 个答案:

答案 0 :(得分:5)

内容不是更改。实际上,表单正在提交,页面基本上正在刷新。

您需要在提交事件上调用import csv with open('eggs.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 以阻止表单提交,如下所示:

.preventDefault();

或者更好的是,完全抛弃表单,将function myFunction(evt) { evt.preventDefault(); // ... other code }; 更改为type="submit",然后将事件处理程序附加到按钮,如下所示:

type="button"

答案 1 :(得分:1)

如果我们使用提交按钮,则会在页面上发回。要解决该解决方案,您可以使用以下

<input type="button" value="calculate server side" onclick="myFunction()" >

使用此功能,您无需创建表单标记

答案 2 :(得分:1)

这是因为表单的默认行为。只需在单击“提交”按钮时提交。如果你不这样做那么ajax的目的是没用的。

解决方案是使用event.preventDefault ();停止表单的默认行为:

 onsubmit="myFunction(event)"  

现在在函数中使用它:

function myFunction(e){
    e.preventDefault();// will stop the form submission
    // rest of the code
}