12

I have a selectbox with parameters as the value in the option, set like this:

<option value="{$i.tileid}androoftiletypeeq{$i.model}andproducenteq{$i.producent}">{$i.name} {$i.$title}</option>

I am trying to replace all "and" and "eq" to "&" and "=", but I can only get my javascript to replace the first occurrence. The form is named / ID'ed "rooftile_select

$("#rooftile_select").change(function(event) {

  event.preventDefault(); 

  var data = $("#rooftile_select").serialize();                
  var pathname = window.location;
  var finalurl = pathname+'&'+data;

  var replaced = finalurl.replace("and", "&").replace("eq", "=");
});

The last parameters in finalurl then looks like this:

&rid=56&rooftiletype=9andproducenteqs

Am I missing something?

2

4 Answers 4

39
var replaced = finalurl.replace(/and/g, '&').replace(/eq/g, '=');

This should do the trick. With the g after the / you're saying that you want to replace all occurences.

Sign up to request clarification or add additional context in comments.

1 Comment

This would replace "sand" with "s&" and "equation" with "=uation". Just be aware of that in case you're passing words like that.
2

Since ES12

As of August 2020, modern browsers have support for the String.replaceAll() method defined by the ECMAScript 2021 (ES12) language specification.

var replaced = finalurl.replaceAll('and', '&').replaceAll('eq', '=');

Otherwise

We can do a full replacement only if we supply the pattern as a regular expression

var replaced = finalurl.replace(/and/g, '&').replace(/eq/g, '=');

Comments

1

Try this :

replaced = finalurl.replace(/and/g, "&").replace(/eq/g, "=");

Comments

0

You can use regexp with global flag

var finalurl = '{$i.tileid}androoftiletypeeq{$i.model}andproducenteq{$i.producent}';
finalurl.replace(/and/g, "&").replace(/eq/g, "=")

If your string is always going to contain {...} variables in it, you can use following to avoid accidently replacing the variable or request parameter name

finalurl.replace(/\}and/g, "}&").replace(/eq\{/g, "={")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.