使用jQuery替换表单操作中的URL查询字符串参数值

时间:2013-03-16 00:24:10

标签: jquery

我有以下表格

<form action="http://www.domain.com/processing.php?page=first&section=77&userid=replaceme">

如何使用jquery我可以用jquery变量更新'replaceme'?

3 个答案:

答案 0 :(得分:3)

我认为您应该使用正则表达式并匹配“userid”参数的名称,而不是“replaceme”值。

尝试:

var $form = $('form');
$form.prop('action', $form.prop('action').replace(/([\?&])(userid=)[^&#]*/, '$1$2' + newValue));

newValue是一个变量,可以代替“替换”而保留你想要的东西。

注意:在你的html中,“&amp;” URL中的字符应替换为字符实体&amp;

<强>更新

使用@undefined中的建议,这将是:

$('form').prop('action', function(i, action){ return action.replace(/([\?&])(userid=)[^&#]*/, '$1$2' + newValue); });

现在不需要$form变量。

这是jsfiddle demo,显示以下情况:

  1. “userid”参数是至少一个其他参数之后的最后一个参数。
  2. “userid”参数是中间参数,前面有一个参数,后面是另一个参数。
  3. “userid”参数是第一个参数,其后是其他参数。
  4. 有一个名称以“userid”结尾的参数,不应替换。
  5. 网址末尾有一个#tag,紧跟在“userid”参数之后。
  6. 正则表达式的说明:

    • 第一组$1匹配'?'或'&amp;'。
    • 第二组$2匹配'userid ='。
    • 然后匹配字符直到'&amp;'或者到达'#'或直到字符串的结尾。

答案 1 :(得分:2)

首先添加ID:

<form id="myForm" action="http://www.domain.com/processing.php?page=first&section=77&userid=replaceme">

然后在DOM准备好了:

$(function() {
    var $form = $('#myForm');
    var someVar = 'foo';
    $form.attr('action', $form.attr('action').replace('replaceme', someVar));
});

演示http://jsfiddle.net/HBQcx/

答案 2 :(得分:1)

让我们说你有以下标记:

  <form id="testform" action="http://www.domain.com/processing.php?page=first&section=77&userid=replaceme">
</form>

并且您想要更改action属性::

中的某些文字
action = $('#testform').attr('action');//get the action attribute.
console.log(action);
action = action.replace('replaceme','changed');//change the action text.
$('#testform').attr('action',action);//change the action attribute.
console.log($('#testform').attr('action'));//test the results.