JS动态改变form表单里的action值属性的方法

前几天自己看了一个小程序,对form里的action值有所困惑,后来才明白其原理是动态改变form表单里的action值。这里主要介绍两种方法。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>第一种方法</title>
<script language="javascript">
	function check() {
		if (document.form1.a[0].checked == true)<!--表示选中页面一-->
			document.form1.action = "1.jsp"
		else
			document.form1.action = "2.jsp"
	}
</script>
</head>
<body>
	<form name="form1" method="post" action="first" onSubmit="check();">
		页面一<input type="radio" name="a"> 
		页面二<input type="radio" name="a"> 
		<input name="" type="submit" value="提交">
	</form>
</body>
</html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>第二种方法</title>
</head>
<body>
	<form id="form1" name="form1" method="post" action="../news/index.asp">
		<table width="100%" height="43" border="0" cellpadding="0"
			cellspacing="0">
			<tr>
				<td height="28"><input name="keyword" type="text"
					style="width: 150px" id="keyword" /></td>
			</tr>
			<tr>
				<td height="28">
				<select name="Searchtype" style="width: 110px" id="Searchtype" onchange="Searchtype1();">
						<option value="news" selected="selected">新闻中心</option>
						<option value="case">工程案例</option>
				</select> 
				<input type="submit" name="Submit" value="搜索" />
				</td>
			</tr>
		</table>
	</form>
	<script language="javascript">
  function Searchtype1(){
	  <!--注意以下使用方法-->
  var type=document.getElementById("Searchtype").options[document.getElementById("Searchtype").selectedIndex].value;
  if (type=="news"){
	  document.getElementById("form1").action="../news/index.asp"
	  }
  else if (type=="case"){
	  document.getElementById("form1").action="../case/index.asp"
	  }
  }
  </script>
</body>
</html>

本人介绍:研究生期间主要从事NLP学习和研究,毕业后在银行从事2年Java后端开发,目前在一家垂直领域TOP1互联网公司大数据部门工作。以下是我运营的一个公众号,会不定期发布一些文章,主要记录工作中使用到的技术和面临的技术难题,涉及后端,大数据和系统架构方面的知识,欢迎大家订阅交流。

在这里插入图片描述

### 动态设置 HTML 表单的 `action` 属性 可以通过 JavaScript 来动态修改 HTML 表单的 `action` 属性。以下是几种常见的实现方式: #### 使用原生 JavaScript 设置 `action` 可以利用 DOM 方法来访问并更改表单的 `action` 属性。例如,通过 `getElementById` 获取表单对象,并直接设置其 `action` 属性。 ```javascript function setActionUsingElement() { document.getElementById('myform').action = 'new_url'; } ``` 此方法简单直观,适用于大多数场景[^1]。 另一种方式是通过 `attributes` 对象操作属性: ```javascript function setActionUsingAttributes() { document.getElementById('myform').attributes['action'].value = 'new_url'; } ``` 这种方式同样有效,但在某些浏览器中可能表现略有差异[^3]。 #### 使用 jQuery 修改 `action` 属性 如果项目中已经引入了 jQuery 库,则可以更简洁地完成相同功能。通过 `.attr()` 方法可以直接更新指定元素的属性。 ```javascript function setActionWithJQuery() { $('form').attr('action', 'new_url'); } ``` 这种方法不仅语法更加紧凑,而且兼容性较好,在处理复杂页面结构时尤为有用[^2]。 对于需要根据不同条件改变提交地址的情况,也可以编写逻辑判断语句嵌入到上述函数内部执行相应动作后再调用 submit 进行数据发送[^4]。 #### 后端语言配合前端调整 Action 地址 虽然主要讨论的是客户端技术方案,但实际上有时也会结合服务器端渲染预先定义好部分路径参数再传递给视图层供最终组装完整的 URL 链接使用。比如 PHP 中可能会这样写: ```php <?php $path="/your/dynamic/path"; ?> <form id="dynamicForm" action="<?php echo htmlspecialchars($path); ?>" method="post"> </form> <script type="text/javascript"> var path='<?php echo json_encode($path); ?>'; function changePath(){ document.getElementById('dynamicForm').action=path+'/update'; } </script> ``` 这展示了如何从服务端传入变量至模板文件JS 脚本读取从而灵活控制实际请求目标位置的例子。 ### 注意事项 无论采用哪种手段,请务必注意转义特殊字符防止 XSS 攻击等问题发生;另外还要考虑跨域限制等因素影响正常流程运作情况下的应对策略设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值