通过jquery

时间:2017-07-11 08:12:02

标签: javascript jquery html forms action

我遇到了jquery这种奇怪的行为,我似乎无法修复它。 基本上我正在尝试在提交表单之前将表单的action参数设置为特定的URL。 当我提交表单时,由于某种原因,我将其设置为只是附加到不同的URL,我想这是之前的URL。

这是我用来设置动作参数的代码。

    //clear action parameter
    jQuery("form[name='form1']").attr('action',''); 
    alert(forwardUrl);

    //set the action parameter
    jQuery("form[name='form1']").attr('action',forwardUrl);
    //action parameter output
    alert('action parameter attribute: ' +  jQuery("form[name='form1']").attr('action'));

    //submit form
    jQuery("form[name='form1']").submit();

例如,使用forwardUrl = "test.php" 两个警报的输出均为test.php

但是,当我运行代码并且表单正在提交时,它会将值发布到https://www.test.com/test.php

我意识到可能是附加到其发布的网址的标准行为。如果是这种情况,我该如何POST到恰好是forwardUrl的其他网址?

我也尝试使用.prop()而不是.attr()。

非常感谢你!

3 个答案:

答案 0 :(得分:0)

您可以在action属性

的帮助下点击submit按钮时设置onclick
<input type='submit' value='Submit' onclick='this.form.action="forwardUrl";' />

或将您的代码更改为此类代码,首先向表单提供id并使用id设置action属性

document.getElementById('formID').action = 'forwardUrl';

或使用表单名称

document.getElementsByName("form1")[0].action = 'forwardUrl';

答案 1 :(得分:0)

使用绝对路径,如Rory所述:

	<head>
	<style type="text/css">
		div.gradient {
			color: #000000;
			width: 800px;
			height: 200px;
		}
		div.gradient:after {
			background: url(SOME_BACKGROUND);
			background-size: cover;
			content:'';
			position:absolute;
			top:0;
			left:0;
			width:inherit;
			height:inherit;
			opacity:0.1;
		}
	</style>
	</head>
	<body>
		<div class="gradient">Text</div>
	</body>

答案 2 :(得分:0)

感谢您的回答。

我实际上只是通过在forwardUrl上使用decodeURIComponent(forwardUrl)来解决问题。