【问题标题】:Using JavaScript to load checkbox Values into a string使用 JavaScript 将复选框值加载到字符串中
【发布时间】:2016-10-13 05:22:21
【问题描述】:

我希望访问者能够做的是:勾选他们想要查询的产品的任意数量的复选框,并在他们勾选第一个后在页面底部显示一个链接。他们点击链接并自动填写表单。

我已经使用查询对后半部分进行了怀疑,但我需要获取逗号分隔的复选框值并将它们输入到一个字符串中以在我的链接中使用 - 即,如果我的复选框代码是:

<input type="checkbox" id="selected" name="selected" value="Blue" class="products"><br>
<input type="checkbox" id="selected" name="selected" value="Green" class="products"><br>
<input type="checkbox" id="selected" name="selected" value="Purple" class="products">

我需要JS生成的字符串为:http://example.com/?subject=Products&checked=Blue,Green,Purple

我已尝试修改此代码(可在此处找到:Best way to get all selected checkboxes VALUES in jQuery),但没有成功:

var checkedValues = $('.products:checkbox:checked').map(function() {
    return this.value;
}).get();

如何将我的复选框值加载到我需要的查询字符串中?

【问题讨论】:

  • 你真的在用jQuery吗?
  • 试试var checkedValues = $('.products:checkbox:checked').map(function() { return $(this).attr('value'); });
  • 嘿@Robiseb - 我不确定你的意思......从我的各种例子中,类似于上面的代码通常会得到所需的结果,我只是在适应它时遇到了麻烦为我的具体用途。请参阅 [链接] (jquery-howto.blogspot.co.uk/2013/02/…) 或 [链接] (tutorialrepublic.com/faq/…)
  • jQuery 是一个著名的 JavaScript 库,它可以帮助您更轻松地编写一些 javascript 函数/动作/...但是在您的情况下,我更建议您学习纯 JS。因此,请查看 Rob M. 的第一部分答案。
  • 啊啊,我现在和你在一起。我很高兴使用任何东西,但也不完全理解。我只接受过 HTML、CSS 和 PHP 方面的培训,因此了解 JavaScript 或 jQuery 是一个挑战。感谢您的帮助:)

标签: javascript string checkbox


【解决方案1】:

看起来下面会产生字符串。

$("button").on("click", function(){
	var arr = []
	$(":checkbox").each(function(){
	   if($(this).is(":checked")){
		 arr.push($(this).val())
	   }
	})
	var vals = arr.join(",")
	var str = "http://example.com/?subject=Products&" + vals
	console.log(str)	
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="checkbox" id="selected" name="selected" value="Blue" class="products"> Blue<br>
<input type="checkbox" id="selected" name="selected" value="Green" class="products"> Green<br>
<input type="checkbox" id="selected" name="selected" value="Purple" class="products"> Purple
<br>
<button>button</button>

【讨论】:

  • 这太棒了!但是,值是否可以在勾选复选框时动态加载,而不是通过按钮。然后是否可以用生成的链接替换按钮?
  • 您可以动态设置值。我不确定这是否是你想要的。我选择向您展示一个按钮,以模拟在提交表单等事件之后如何获取选中复选框的所有值。我不知道您为什么要在单击复选框后更改值。哦,也许你想看看 .change() stackoverflow.com/a/7031408/1893672。在您单击复选框后会执行某些操作
  • 谢谢!我要做的是在单击下一页上的复选框时生成一个链接:[链接](kittahbirmans.co.uk/kittens)一旦选中第一个框,该链接就会出现,并且值应该根据选中的框动态变化.单击链接时(根据上面的 var str ),它会将它们带到一个表单,该表单预先填充了复选框值中的数据。我不能将表格放在同一页面上。如果我可以根据所选字段进行设置,按钮的想法可能会起作用,但理想情况下它应该是一个动态链接。
  • 听起来你真的想创建一个a 标签,每次用户点击一个复选框时都会更新href。您需要使用 .change() 。每次用户单击复选框.change 时都会激活,您将能够测试用户是否单击了该复选框。这样您就可以更新a 标签。这有点像另一个问题。在 jquery 上寻找 .change() 的例子,玩得开心。
  • 很棒的建议!我不能否认你已经回答了这个问题的标题!我可能会问另一个与链接想法更密切相关的问题:) 谢谢!
【解决方案2】:

像这样获取你的值字符串

var checked = Array.prototype.slice.call(document.querySelectorAll('.products:checked')).map(function(el){
  return el.value;
}).join(',');

然后创建一个&lt;a&gt;元素

var aEl = document.createElement("a");
aEl.setAttribute("href", "http://example.com/?subject=Products&checked=" + checked);

把它放在你想要的地方(例如,在正文的末尾)

document.body.appendChild = aEl;

或者在一个空的存在的&lt;div&gt;

// HTML
<div id="myEmptyDiv"></div>
// JS
document.getElementById('myEmptyDiv').innerHTML = aEl;

这里有一个 Fiddle 和一个 change 听众

【讨论】:

  • 太棒了!另一个菜鸟问题...如何使用该 console.log 值来实际检索字符串形式的值?我需要做的是使用 console.log('example.com/?subject=Products&checked=' + checked);创建一个用户可以实际点击的 链接。
【解决方案3】:

这应该可以满足您的需求:

var checked = Array.prototype.slice.call(document.querySelectorAll('[name=selected]:checked'));
var values = checked.map(function(el) {
  return el.value;
});

console.log(values.join(','));

es6 版本:

let checked = Array.from(document.querySelectorAll('[name=selected]:checked'));
let values = checked.map(el => el.value);

console.log(values.join(','));

【讨论】:

  • 对我来说看起来不错 - 但是我将如何提取逗号分隔值并将其打印到我的 url 字符串中?看起来好像它正在正确检索它们,但我无法让它们实际显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
相关资源
最近更新 更多