从输入字段追加到a.href id

时间:2012-11-23 16:24:02

标签: javascript jquery forms hyperlink

我正在尝试附加一个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>

8 个答案:

答案 0 :(得分: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_name的值;你只需要在按下链接时使用该值。

答案 1 :(得分: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();
});

答案 2 :(得分: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>

答案 3 :(得分: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存储在某处,就像在数据属性中一样。

答案 4 :(得分: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,如果需要的话还可以删除那个

答案 5 :(得分:0)

试试这个:

jQuery(function(){
    $("#txt_name").keypress(function() {
        var value = $("#txt_name").val();
        $("a#coupon_link").attr("href", '&discount_code=' + String(value));
    });
});

答案 6 :(得分:0)

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

答案 7 :(得分: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));



});