javascript - 在 WordPress 中使用 JavaScript 提交表单后,页面立即重新加载

标签 javascript ajax wordpress

我想在插入表单 div 后显示数据,并在同一页面的另一个 div 上显示提交表单的结果,而不需要更改 WordPress 中的页面?我使用了 javascript 函数 onSubmit 它按照我想要的方式工作,但是在提交表单 div 后,它显示隐藏的结果 div 几秒钟,然后它立即重新加载,我不想在显示结果 div 后重新加载或刷新页面?

第一个 Div 的表单代码:

<form  style="margin-top: 30px;" class="form-horizontal t-gray" id="ContactForm" method="post"  onsubmit="document.getElementById('first').style.display = 'none';document.getElementById('hidden_div').style.display = ''; return true;" action="">
							<div id="first">

						<div class="col-md-6">
						<div class="form-group">
							<label for="" class="col-sm-3 control-label">Select Journey Type:</label>
							<div class="col-sm-6">
							  <select class="form-control" name="JourneyType">
							  	<option value="Distance (point A to Point B)">Distance (point A to Point B)</option>
							  <option value="Hourly">Hourly</option>
									</select>
							</div>
						</div>

						<div class="form-group">
							<label for="" class="col-sm-3 control-label">Baby Seat Required:</label>
							<div class="col-sm-6">
							  <select class="form-control" name="babyseat"><option value="Not Required">Not Required</option><option value="baby seat">Baby Seat</option>
									<option value="booster seat">Booster Seat</option></select>
							</div>
						</div>
	</div>
	<div class="col-md-6">
						<div class="form-group" style="position: relative;">
							<label for="" class="col-sm-3 control-label">Journey From:</label>
							<div class="col-sm-6">
							  <input class="form-control" type="text" value="" name="Journey_From" id="inputString" onKeyUp="lookup(this.value);" onBlur="fill();" />
							</div>
							<div class="suggestionsBox" id="suggestions" style="display: none;">
								<!-- <img src="images/upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" /> -->
								<div class="suggestionList" id="autoSuggestionsList">

								</div>
							</div>
						</div>
						<div class="form-group" style="position: relative;">
							<label for="" class="col-sm-3 control-label">Journey To:</label>
							<div class="col-sm-6">
							  <select class="form-control" name="Journey_To"><option value="Melbourne Airport">Melbourne Airport</option>
									<option value="Melbourne CBD">Melbourne CBD</option></select>
							</div>
						</div>
	</div>
						<div class="form-group">
							<div class="col-md-6 col-md-offset-3">
							<button type="submit" class="btn btn-lg btn-primary" style="background-color:#e6ae48; border-color:#e6ae48; color:#fff;">Get Quote</button>
							</div>
						</div>
					</div>

					</form>
				</div></div>
</div>
				<div class="clear"></div><div class="clear"></div></div></div><div class="clear"></div>

这是我的第二个 Div,它在第一个 div 提交后显示数据,但不会停留很长时间:

<div id="hidden_div" style="display:none" >
						<?php        
// $conn = mysqli_connect("localhost","root","", "melbou99_melcars") or die("Could not make connection to the Database.");

$conn = mysqli_connect("localhost","tanxeelc_singh","singh@123", "tanxeelc_melb") or die("Could not make connection to the Database.");

// $db= mysql_select_db("melbou99_melcars",$conn) or die("Could not select the Database.");
//$conn = mysql_connect("localhost","root","") or die("Could not make connection to the Database.");
//$db= mysql_select_db("nz",$conn) or die("Could not select the Database.");
// old pass - !Cmo_;,cBb^A
?>
		<div class="container booking-area">
		<div class="row">
			<div class="col-md-12">
			<center>	<h3 class="">Online Price Calculator:</h3> </center>
                   <center>    <p class="t-gray"> Based on your selection, the price estimation is as follows. This is just the estimation not the final price.</p></center>

							<?php
							
							$journeytype= $_REQUEST['JourneyType'];
							$babyseat= $_REQUEST['babyseat'];
							$journeyfrom= $_REQUEST['Journey_From'];
							$journeyto= $_REQUEST['Journey_To'];

							?>	

							<?php
                            $sql = "SELECT * FROM prices where value='$journeyfrom'"; 
							$rs = mysqli_query($conn, $sql);
							while($myrow = mysqli_fetch_row($rs)){
								$value=$myrow[1];
								$cbd=$myrow[2];	
								$melb_air=$myrow[3];
								$ava_air=$myrow[4];
							}
							
							?>
<div class="row">
<div class="col-sm-6 pull-left">
					<h4 class="">Journey Type:</h4>
					<p class="t-gray"><?php echo $journeytype; ?></p>

					<h4 class="">Baby Seat Required:</h4>
					<p class="t-gray"><?php echo $babyseat; ?></p>

					<h4 class="">Journey From:</h4>
					<p class="t-gray"><?php echo $journeyfrom; ?></p>

					<h4 class="">Journey To:</h4>
					<p class="t-gray"><?php echo $journeyto; ?></p>

</div>
<div class="col-sm-6 pull-right" style="padding-right:100px;margin-top:5%;">
<h2 align="center">Fare:<br/>
					<span class="fare_p">
						<?php
								
								if($journeytype=="One Way Journey"){
									
										if($journeyto=="Melbourne Airport"){
											$fare= $melb_air;
										}
										elseif($journeyto=="Avalon Airport"){
												$fare=  $ava_air;
										}
										elseif($journeyto=="Melbourne CBD"){
												$fare=  $cbd;
										}
										if($babyseat=="baby seat"|| $babyseat== "booster seat"){
											$fare=$fare+10;
										}
											else{
												$fare=$fare+0;
										}
									echo "One way fare = $" .$fare ;
								}
								elseif($journeytype=="Return Journey"){
									
									if($journeyto=="Melbourne Airport"){
										$fare= $melb_air;
										
									}
									elseif($journeyto=="Avalon Airport"){
											$fare=	$ava_air;
											
									}
									elseif($journeyto=="Melbourne CBD"){
												$fare= $cbd;
												
									}
									$fare=$fare*2;
									if($babyseat=="baby seat"||$babyseat== "booster seat"){
									$fare=$fare+10;
									
									}
									else{
									$fare=$fare+0;
									
								}
									echo "Return Fare = $" .$fare;
								}
								
								?>
                                </span>
                                <br/><br/>
	
					</h2>

</div>

</div><!--row-->



				
			</div>
	
	
		</div><!--row-->
	</div><!--fluid-->
	</div>

最佳答案

您可以通过将 e 传递到 onsubmit 函数来使用 e.preventDefault()

简单来说,它的作用是更改事件的默认行为。如果您提交表单,浏览器中的页面将不会刷新。您可以在 MDN 阅读有关 event.preventDefault() 的更多信息。 .

在 HTML 元素内进行内联 JavaScript 函数调用不被认为是最佳实践,至少在普通 JS 中开发时不是。相反,您可以在单独的 JS 文件或 script 标记中使用元素的 HTML 引用,在本例中最好是 id

要引用您的表单,您需要执行以下操作:

ES6(推荐)

const contactForm = document.getElementById('ContactForm');

ES5

var contactForm = document.getElementById('ContactForm');

然后可以简单地通过点表示法来绑定(bind)提交事件:

contactForm.onsubmit = function(e){
  e.preventDefault();
  // do some other stuff
};

或者通过添加事件监听器:

contactForm.addEventListener('submit', function(e) {
  e.preventDefault();
  // keep doing stuff
}, false);

大多数 JS 开发人员更喜欢 addEventListener() 方法,因为它使他们能够更好地控制事件处理。但是,就您而言,它可能被认为是多余的。

关于javascript - 在 WordPress 中使用 JavaScript 提交表单后,页面立即重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609593/

相关文章:

javascript - Angular Material 1/md-virtual-repeat 选择滚动

jquery - 状态成功时的 Ajax 用户通知

javascript - 为什么我的 ajax 请求总是抛出错误?

php - WordPress - 列出具有特定 meta_key 值的自定义类型

php - 将 Wordpress 菜单 css 类添加到 <span class ="">

css - Cloudflare 指向我的网站,但 Css 不工作

javascript - 如何使用鼠标在 fabricjs 中自由绘制圆圈?

javascript - jQuery AJAX : Returns request. 成功后失败

python - 谷歌应用引擎: Using Ajax

javascript - 确定我的应用程序正在使用哪个控件