1

我正在尝试向带有 id 的链接附加一个从输入文本字段输入的值。我来了这么远搜索stackoverflow,但id不起作用!

<script type="text/javascript">
 jQuery(function(){
   $("#txt_name").keypress(function() {
     var value = $("#txt_name").val();
     });
   $("a#coupon_link").attr("href", function(i) {
      return href + '&discount_code='.text(value); 
      });
});
</script>

这就是 html 的样子

<form>
  <fieldset>
    <input id="txt_name" type="text" value="discount" />
  </fieldset>
</form>
<a id="coupon_link" href="https://www.e-junkie.com/ecom/gb.php?c=cart&i=XXXXXX&cl=YYYYYY&ejc=2" target="ej_ejc" class="ec_ejc_thkbx" onClick="javascript:return EJEJC_lc(this);"><img src="http://www.e-junkie.com/ej/ej_add_to_cart.gif" border="0" alt="Add to Cart"/></a>
4

8 回答 8

3

你可能是这个意思:

$(function() {
   $("#coupon_link").on('click', function(e) {
      e.preventDefault(); // apparently not needed
      location.href = $(this).attr('href') + '&discount_code=' + encodeURIComponent($('#txt_name').val());
   });
});

您不必更新#txt_nameon keypress 的值;您只需在按下链接时使用该值。

于 2012-11-23T16:32:21.983 回答
2

像这样修复您的代码:

$(function(){
   $("#txt_name").keypress(function() {
     var value = $("#txt_name").val();
     var link = $("#coupon_link");
     var originalHref = link.attr('originalHref');
     if (!originalHref) {
          originalHref = link.attr("href");
          link.attr("originalHref", originalHref)
     }
     link.attr("href", originalHref + '&discount_code='+value);
   });
});

有几点需要注意:

  • 当您通过 ID 定位元素时,切勿向选择器添加任何内容
  • 您的值变量不在同一范围内
  • 的返回val可以直接拼接,不用尝试改成文本
  • 在您的情况下,您不需要将函数传递给 attr
  • 您正在尝试使 href 随每次击键而增长。这是一个坏主意。我提出的解决方案是保留原来的href
  • 如果您不确定原始 href 是否还有一些参数(即有“?”),您应该对其进行测试(我让您这样做)

总体而言,更清洁的解决方案不是更改链接,而是在单击链接时构建 href:

$("#coupon_link").click(function(e) {
   location = this.href + '&discount_code=' + $('#txt_name').val();
});
于 2012-11-23T16:27:42.663 回答
1

不确定是否理解,但它看起来像是一个范围问题,试试这个 javascript:

<script type="text/javascript">
 jQuery(function(){
   var value = 0;
   $("#txt_name").keypress(function() {
       value = $("#txt_name").val();
       $("a#coupon_link").attr("href", function(i) {
          return href + '&discount_code=' + encodeURIComponent(value); 
        });
    });
});
</script>
于 2012-11-23T16:27:03.723 回答
0

您可能需要在按下某个键时更改 href,而不仅仅是在页面加载时。为此,您必须在 keyup 函数中替换 href,如下所示:

$(function(){
    var link = $("a#coupon_link");
    link.data('href', link.attr("href"));

    $("#txt_name").on('keyup', function() {
        link.attr("href", link.data('href') + '&discount_code='+ this.value); 
    });
});

为了不附加&discount_code=***多次,您需要将原始 href 存储在某处,例如数据属性中。

于 2012-11-23T16:27:51.040 回答
0

我认为你需要这个:

<script type="text/javascript">
 $(function(){
   $("#txt_name").keypress(function() {
     var value = $("#txt_name").val();
      $("a#coupon_link").attr("href",href+'&discount_code='+value.toString);
    });

});
</script>

看看href 不知道你在哪里有那个 var,如果需要,请删除它

于 2012-11-23T16:28:17.567 回答
0

试试这个:

jQuery(function(){
    $("#txt_name").keypress(function() {
        var value = $("#txt_name").val();
        $("a#coupon_link").attr("href", '&discount_code=' + String(value));
    });
});
于 2012-11-23T16:30:43.273 回答
0

这不起作用,因为在触发按键事件之前调用函数时未更改 href。考虑用 blur 替换 keypress 并在调用 blur() 时更新 href

于 2012-11-23T16:33:38.157 回答
0

这对我有用,可以从输入字段中获取值并将其附加到使用 jquery 的现有链接中。

$('#qty').on('keyup', function() {
           var theQty = 0;
           theQty = $("#qty").val();
           var oldHref=$("a#buybtn").attr("href");
            $("a#buybtn").attr("href",oldHref+ '&qty=' + String(theQty));



});
于 2017-08-06T08:59:28.797 回答