2016-11-19 73 views
0

我想将选中的复选框值作为URL参数添加到我的链接。 这是我在其他之中:使用javascript将复选框值添加到链接

<input id="box1" type="checkbox" class="checkbox" value="bx1=1"> <label for="box1"></label> 
<input id="box2" type="checkbox" class="checkbox" value="bx2=1"> <label for="box1"></label> 

<script> 
    $(".checkbox").on("change", function() { 
     var values = []; 
     $('.checkbox:checked').each(function() { 
      var result = $(this).val(); 
      values.push(result); 
     }); 
     var key = $(".link").html(values.join("&")); 
     document.write('<a href="http://www.example.com/test.html?' + key + '">Open here</a>'); 
    }); 
</script> 

预期的结果是“http://www.example.com/test.html?bx1=1&bx2=1”。 我希望有人能帮助我。

感谢这些行:

<input id="box1" type="checkbox" class="checkbox" value="bx1=1"> <label for="box1"></label> 
<input id="box2" type="checkbox" class="checkbox" value="bx2=1"> <label for="box1"></label> 
<a class="link" href="http://www.example.com/test.html">Open here</a> 

<script> 
    $(".checkbox").on("change", function() { 
     console.log('fzef'); 
     var values = []; 
     $('.checkbox:checked').each(function() { 
      var result = $(this).val(); 
      values.push(result); 
     }); 
     $(".link").attr('href', 'http://www.example.com/test.html?' + values.join("&")); 
    }); 

    // Init link on page load 
    $(".checkbox").trigger("change"); 
</script> 

我得到我的价值观之间的&on&,并没有对IE浏览器。任何想法?谢谢!

+2

document.write()的?但是,您的预期结果是什么?你有什么错误? –

+0

对不起,我忘了把url放在这里... – vloryan

+0

这是因为你将'values'设置为一个数组,所以“粘贴”的值基本上是一个对象,你需要从该对象中提取值... – odedta

回答

1

你可以这样做:

<input id="box1" type="checkbox" class="checkbox" value="bx1=1"> <label for="box1"></label> 
<input id="box2" type="checkbox" class="checkbox" value="bx2=1"> <label for="box1"></label> 
<a class="link" href="http://www.example.com/test.html">Open here</a> 

<script> 
    $(".checkbox").on("change", function() {console.log('fzef'); 
     var values = []; 
     $('.checkbox:checked').each(function() { 
      var result = $(this).val(); 
      values.push(result); 
     }); 
     $(".link").attr('href', 'http://www.example.com/test.html?' + values.join("&")); 
    }); 

    // Init link on page load 
    $(".checkbox").trigger("change"); 
</script> 
+0

非常感谢您对此和所有其他建议!这很好用! – vloryan

+0

当我在浏览器中点击** BACK **按钮时,选中的复选框仍被选中,但链接不包含值。任何机会/想法更新此案件的链接? – vloryan

+0

查看我的编辑,您只需在页面加载时强制更改事件。 – sylvain1264

-1

尝试这样的: 你需要document.write()

document.write('<a href="http://www.example.com/test.html?' + values.join('&') + '">http://www.example.com/test.html?' + values.join('&')+'</a>'); 

OR

$("button").on("click", function() { 
 
     var values = []; 
 
     $('.checkbox:checked').each(function() { 
 
      var result = $(this).val(); 
 
      values.push(result); 
 
     }); 
 
    
 
    
 
    
 
    $('#url').attr('href','http://www.example.com/test.html?' + values.join('&')); 
 
    $('#url').html('http://www.example.com/test.html?' + values.join('&')) 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="box1" type="checkbox" class="checkbox" value="bx1=1"> <label for="box1">first</label> 
 
<input id="box2" type="checkbox" class="checkbox" value="bx2=1"> <label for="box1">second</label> 
 
<button >Go</button> 
 
<a id="url"></a>

+0

'document.write()'将关闭现有文档并开始在第一个复选框中单击一个新文档,然后您将永远不能单击另一个文档或取消选中第一个文档。 –

+0

但是OP没有提及使用相同的页面。他还用'document.write()'写入 – prasanth

+0

OP使用'document.write()'是错误的。这只是他建立字符串的尝试,但除非你有意要写一个新文档,否则你不能使用它,这显然不是这里的意图。 –

0

你需要做的修正是在该行
var key = $(".link").html(values.join("&"));

您需要将其更改为
var key = values.join("&");

为什么?
因为代码中没有.link选择器。

1

裹在表单中的复选框,给他们的名字,让jQuery的做的工作与.serialize()

$(function() { 
 
    $("form").on("change", function() { 
 
    var href = "http://www.example.com/test.html", 
 
     params = $(this).serialize(); 
 

 
    if (params.length > 0) { 
 
     href += "?" + params; 
 
    } 
 

 
    console.log(href); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <input id="box1" name="bx1" type="checkbox" class="checkbox" value="1" />bx1 
 
    <input id="box2" name="bx2" type="checkbox" class="checkbox" value="1" />bx2 
 
</form>