创建一个可以多次提交的按钮

时间:2017-08-17 17:01:54

标签: javascript html

所以我找到了一个脚本,可以在你想要的时候生成你的链接,在这里(给所有者的信用!)

function CreateAffiliateLink(F) {
  var findstring = "XXXXX";
  var ts = 'var replacewith=document.' + F.name + '.AffCode.value';
  eval(ts);
  if (replacewith.length < 1) {
    return;
  }
  var re = new RegExp(findstring, "g")
  for (i = 0; i < F.length; i++) {
    var s = new String(F.elements[i].value);
    if (s.length > 0) {
      var newstr = s.replace(re, replacewith);
      F.elements[i].value = newstr;
    }
  }
}
<form name="me">
  <p>
    Type your affiliate code in the box and click the button:
    <input type="text" name="AffCode" size="17">
    <input type="button" value="Personalize links with my affiliate code" onClick="CreateAffiliateLink(this.form)">
  </p>
  <p>
    Image link:<br>
    <textarea name="a" cols="46" rows="3" wrap="off"> 
    <a href="http://example.com/master/#XXXXX 
    <img src="http://example.com/image.jpg"> 
    </a> 
    </textarea>
  </p>
  <p>
    An ezine text link:<br>
    <input type="text" name="b" size="46" value="http://example.com/master/#XXXXX">
  </p>
</form>

但是现在,当我使用它时,每次我想要设置一个新值时我都要刷新。我想找到一种方法,让我可以在不刷新页面的情况下多次生成。

我尝试编辑它的某些部分,但它仍然只能使用一次。有没有办法改变它?

2 个答案:

答案 0 :(得分:2)

因为findtring总是&#39; XXXXX&#39; (它查找值,点击后会发生变化)。

将旧代码替换为:

var findstring = "XXXXX";
function CreateAffiliateLink(F) {
    var replacewith = F.AffCode.value;
    if (replacewith.length < 1) return;
    var re = new RegExp(findstring, "g")
    for (i = 0; i < F.length; i++) {
        var s = F.elements[i].value.toString();
        if (s.length > 0) {
            var newstr = s.replace(re, replacewith);
            F.elements[i].value = newstr;
            findstring = replacewith;
        }
    }
}

答案 1 :(得分:1)

它只运行一次的原因是因为它在URL中寻找XXXXX,并用联盟代码替换它。但是,在您进行替换后,该网址不再具有XXXXX

使用与网址中的master/#匹配的更一般的正则表达式,并替换其后的所有内容。

function CreateAffiliateLink(F) {
  var replacewith=F.AffCode.value;
  if (replacewith.length < 1) {
    return;
  }
  replacewith = 'master/#' + replacewith;
  var re = /master\/#\w+/g;
  for (i = 0; i < F.length; i++) {
    var s = new String(F.elements[i].value);
    if (s.length > 0) {
      var newstr = s.replace(re, replacewith);
      F.elements[i].value = newstr;
    }
  }
}
<form name="me">
  <p>
    Type your affiliate code in the box and click the button:
    <input type="text" name="AffCode" size="17">
    <input type="button" value="Personalize links with my affiliate code" onClick="CreateAffiliateLink(this.form)">
  </p>
  <p>
    Image link:<br>
    <textarea name="a" cols="46" rows="3" wrap="off"> 
    <a href="http://example.com/master/#XXXXX"> 
    <img src="http://example.com/image.jpg"> 
    </a> 
    </textarea>
  </p>
  <p>
    An ezine text link:<br>
    <input type="text" name="b" size="46" value="http://example.com/master/#XXXXX">
  </p>
</form>